Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Microsoft SQL Server Новый топик    Ответить
 даже не знаю как.... есть таблица, делаю из строк - столбцы, но ....  [new]
Focha
Member

Откуда: Москва
Сообщений: 496
даже не знаю как.... есть таблица, делаю из строк - столбцы, но очень долго это выполняется.

select
     sh.gender
    ,sh.appointment
    ,sh.seasonality
    ,sh.article_color
    ,sh.last_season_order
    ,ar.current_sale_price_ru
    ,ar.current_sale_price_by
    ,ar.current_sale_price_kz

    ,sh.size
	,SUM(case when sh.store='РЦСпбБрБУ' then sh.stock_available_quantity end) as [stock_available_quantity|ru|склад|РЦСпбБрБУ|РЦСпбБрБУ (склад)]
	,SUM(case when sh.store='РЦСпбБрБУ' then sh.stock_reserved_quantity end) as [stock_reserved_quantity|ru|склад|РЦСпбБрБУ|РЦСпбБрБУ (склад)]
	,SUM(case when sh.store='РЦСпбБрБУ' then sh.sales_quantity_last_14_day end) as [sales_quantity_last_14_day|ru|склад|РЦСпбБрБУ|РЦСпбБрБУ (склад)]
	,SUM(case when sh.store='РЦСпбБрБУ' then sh.covering_min end) as [covering_min|ru|склад|РЦСпбБрБУ|РЦСпбБрБУ (склад)]
	,SUM(case when sh.store='РС Вол брк' then sh.stock_available_quantity end) as [stock_available_quantity|ru|склад|РС Вол брк|РС Вол брк (склад)]
	,SUM(case when sh.store='РС Вол брк' then sh.stock_reserved_quantity end) as [stock_reserved_quantity|ru|склад|РС Вол брк|РС Вол брк (склад)]
	,SUM(case when sh.store='РС Вол брк' then sh.sales_quantity_last_14_day end) as [sales_quantity_last_14_day|ru|склад|РС Вол брк|РС Вол брк (склад)]
	,SUM(case when sh.store='РС Вол брк' then sh.covering_min end) as [covering_min|ru|склад|РС Вол брк|РС Вол брк (склад)]

from WRH_ANALYTICS.AD_info.temp_shakhmatka_data as sh
join WRH_ANALYTICS.AD_data.info_article_color as ar
       on sh.article_color=ar.article_color
group by
     sh.gender
    ,sh.appointment
    ,sh.seasonality
    ,sh.article_color
    ,sh.last_season_order
    ,ar.current_sale_price_ru
    ,ar.current_sale_price_by
    ,ar.current_sale_price_kz
    ,sh.size


Смотрю план и вижу, сортировка, она будет потому что group by:
Может подскажите как сделать, что бы запрос выполнялся быстро? магазинов 150.

К сообщению приложен файл. Размер - 73Kb
13 ноя 17, 15:36    [20949892]     Ответить | Цитировать Сообщить модератору
 Re: даже не знаю как.... есть таблица, делаю из строк - столбцы, но ....  [new]
felix_ff
Member

Откуда: Moscow
Сообщений: 1172
Focha,

Индексы у вас какие на таблицах?
И предиката поиска нет чтоли? Полностью обе таблицы соединяете?
13 ноя 17, 16:17    [20950054]     Ответить | Цитировать Сообщить модератору
 Re: даже не знаю как.... есть таблица, делаю из строк - столбцы, но ....  [new]
alexeyvg
Member

Откуда: Moscow
Сообщений: 30801
Focha
Может подскажите как сделать, что бы запрос выполнялся быстро?
Если для всей таблицы, то никак, всё равно скан, и всё равно сортировка, раз группировка.

Если бизнес требует всех данных из базы, то чего удивляться, что все данные получаются долго? Ускорить можно только наращиванием железа.

Ну, или можно агрегатные данные хранить отдельно, обновлять их при обновлении данных, так обычно делают, что бы было быстро. То, что в 1С называется "регистры".
13 ноя 17, 16:34    [20950133]     Ответить | Цитировать Сообщить модератору
 Re: даже не знаю как.... есть таблица, делаю из строк - столбцы, но ....  [new]
alexeyvg
Member

Откуда: Moscow
Сообщений: 30801
alexeyvg
Focha
Может подскажите как сделать, что бы запрос выполнялся быстро?
Если для всей таблицы, то никак, всё равно скан, и всё равно сортировка, раз группировка.

Если бизнес требует всех данных из базы, то чего удивляться, что все данные получаются долго? Ускорить можно только наращиванием железа.

Ну, или можно агрегатные данные хранить отдельно, обновлять их при обновлении данных, так обычно делают, что бы было быстро. То, что в 1С называется "регистры".
А, единственно, нужен индекс на WRH_ANALYTICS.AD_data.info_article_color.article_color
Очевидно, ПК
13 ноя 17, 16:36    [20950139]     Ответить | Цитировать Сообщить модератору
 Re: даже не знаю как.... есть таблица, делаю из строк - столбцы, но ....  [new]
Yasha123
Member

Откуда:
Сообщений: 1833
ну попробуйте ему хинтом хэшевый агрегат прописать, вдруг будет быстрее: option(hash group)
поди спилит в темпдб, и даже не отрисовывает в плане, ибо 2008
13 ноя 17, 16:40    [20950149]     Ответить | Цитировать Сообщить модератору
 Re: даже не знаю как.... есть таблица, делаю из строк - столбцы, но ....  [new]
Yasha123
Member

Откуда:
Сообщений: 1833
alexeyvg
Если для всей таблицы, то никак, всё равно скан, и всё равно сортировка, раз группировка.

да не, пускай попробует хэшем считать.
наш тоже на сортировках загибается, особенно, если криво оценивает.
хэш ему мозги правит
13 ноя 17, 16:44    [20950168]     Ответить | Цитировать Сообщить модератору
 Re: даже не знаю как.... есть таблица, делаю из строк - столбцы, но ....  [new]
Владислав Колосов
Member

Откуда:
Сообщений: 7401
А почему в одно ядро молотит? Вроде хэш распараллеливается.
13 ноя 17, 16:54    [20950217]     Ответить | Цитировать Сообщить модератору
 Re: даже не знаю как.... есть таблица, делаю из строк - столбцы, но ....  [new]
Yasha123
Member

Откуда:
Сообщений: 1833
Владислав Колосов
А почему в одно ядро молотит? Вроде хэш распараллеливается.

ну так наверное чинили дедлоки с мутексом,
искоренили параллелизм на всякий случай
13 ноя 17, 17:07    [20950280]     Ответить | Цитировать Сообщить модератору
 Re: даже не знаю как.... есть таблица, делаю из строк - столбцы, но ....  [new]
Ivan Durak
Member

Откуда: Minsk!!!
Сообщений: 3618
felix_ff
Focha,

Индексы у вас какие на таблицах?
И предиката поиска нет чтоли? Полностью обе таблицы соединяете?

есть там фильтры
sh.store in ('РС Вол брк', 'РЦСпбБрБУ' )
13 ноя 17, 17:49    [20950432]     Ответить | Цитировать Сообщить модератору
 Re: даже не знаю как.... есть таблица, делаю из строк - столбцы, но ....  [new]
Ivan Durak
Member

Откуда: Minsk!!!
Сообщений: 3618
чую тут все неверно по логике.
явно напрашивается сперва группировать WRH_ANALYTICS.AD_info.temp_shakhmatka_data
и только потом джоинить к ней WRH_ANALYTICS.AD_data.info_article_color !!!
13 ноя 17, 17:51    [20950438]     Ответить | Цитировать Сообщить модератору
 Re: даже не знаю как.... есть таблица, делаю из строк - столбцы, но ....  [new]
TaPaK
Member

Откуда: Kiev
Сообщений: 6794
Ivan Durak
felix_ff
Focha,

Индексы у вас какие на таблицах?
И предиката поиска нет чтоли? Полностью обе таблицы соединяете?

есть там фильтры
sh.store in ('РС Вол брк', 'РЦСпбБрБУ' )

хех, и чо?
автор
явно напрашивается сперва группировать WRH_ANALYTICS.AD_info.temp_shakhmatka_data
и только потом джоинить к ней WRH_ANALYTICS.AD_data.info_article_color !!!

а потом разгрупировывать?
как такие советы рождаются...
13 ноя 17, 17:54    [20950448]     Ответить | Цитировать Сообщить модератору
 Re: даже не знаю как.... есть таблица, делаю из строк - столбцы, но ....  [new]
Владислав Колосов
Member

Откуда:
Сообщений: 7401
Focha,

можно прикрутить CDC и формировать результирующий набор в отдельной таблице по мере поступления данных. Фоном будет заполняться.
13 ноя 17, 18:25    [20950536]     Ответить | Цитировать Сообщить модератору
 Re: даже не знаю как.... есть таблица, делаю из строк - столбцы, но ....  [new]
Yasha123
Member

Откуда:
Сообщений: 1833
"фоном" апдэйтятся materialized views, без всяких CDC
13 ноя 17, 18:36    [20950560]     Ответить | Цитировать Сообщить модератору
 Re: даже не знаю как.... есть таблица, делаю из строк - столбцы, но ....  [new]
iap
Member

Откуда: Москва
Сообщений: 46954
alexeyvg
Ну, или можно агрегатные данные хранить отдельно, обновлять их при обновлении данных, так обычно делают, что бы было быстро. То, что в 1С называется "регистры".
Сделать индексированное представление
13 ноя 17, 18:37    [20950562]     Ответить | Цитировать Сообщить модератору
 Re: даже не знаю как.... есть таблица, делаю из строк - столбцы, но ....  [new]
Focha
Member

Откуда: Москва
Сообщений: 496
iap
alexeyvg
Ну, или можно агрегатные данные хранить отдельно, обновлять их при обновлении данных, так обычно делают, что бы было быстро. То, что в 1С называется "регистры".
Сделать индексированное представление

да, так сейчас деляю, создаю таблицы через pivot и сейчас доделаю и будет понятно.
13 ноя 17, 18:47    [20950588]     Ответить | Цитировать Сообщить модератору
 Re: даже не знаю как.... есть таблица, делаю из строк - столбцы, но ....  [new]
iap
Member

Откуда: Москва
Сообщений: 46954
Focha
iap
пропущено...
Сделать индексированное представление

да, так сейчас деляю, создаю таблицы через pivot и сейчас доделаю и будет понятно.
Про таблицы я ничего не говорил...

P.S. А PIVOT просто ненавижу
13 ноя 17, 19:15    [20950651]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить