Добро пожаловать в форум, Guest >> Войти | Регистрация | Поиск | Правила | | В избранное | Подписаться | ||
Все форумы / Microsoft SQL Server |
![]() ![]() |
waszkiewicz Member Откуда: Сообщений: 1089 |
вот такой запросwith cte(extcode) as (select '90031' union select '90011' union select '90139' union select '90025' union select '90150' ) select pp.extcode,cast(prday as DATE),SUM(weight),COUNT(weight) from proc_packs pp with (nolock) join cte c on pp.extcode=c.extcode where 1=1 and site=1 and station=109 and rtype=1 and prday between '20141101' and GETDATE() -- Plan1 --and prday between '20151101' and GETDATE() -- Plan2 --and prday between '20151120' and GETDATE() -- Plan3 group by prday,pp.extcode order by extcode,prday К сообщению приложен файл (Plan1.sqlplan - 37Kb) cкачать ![]() |
21 мар 16, 12:14 [18958310] Ответить | Цитировать Сообщить модератору |
waszkiewicz Member Откуда: Сообщений: 1089 |
waszkiewicz, К сообщению приложен файл (Plan2.sqlplan - 43Kb) cкачать ![]() |
21 мар 16, 12:15 [18958315] Ответить | Цитировать Сообщить модератору |
waszkiewicz Member Откуда: Сообщений: 1089 |
waszkiewicz, ниасилил в одно сообщение :( К сообщению приложен файл (Plan3.sqlplan - 42Kb) cкачать ![]() |
21 мар 16, 12:15 [18958317] Ответить | Цитировать Сообщить модератору |
invm Member Откуда: Москва Сообщений: 9687 |
Потому что запросы разные. |
21 мар 16, 12:27 [18958380] Ответить | Цитировать Сообщить модератору |
waszkiewicz Member Откуда: Сообщений: 1089 |
Понятно, что разные. Почему в первом случае в скан валится? |
21 мар 16, 12:31 [18958395] Ответить | Цитировать Сообщить модератору |
WarAnt Member Откуда: Питер Сообщений: 2423 |
waszkiewicz, потому что скан становится дешевле поиска с кей-лукапом. |
21 мар 16, 12:36 [18958418] Ответить | Цитировать Сообщить модератору |
Konst_One Member Откуда: Сообщений: 11593 |
странно другое - почему в певом варианте так мало данных запрос возвращает |
21 мар 16, 12:36 [18958421] Ответить | Цитировать Сообщить модератору |
waszkiewicz Member Откуда: Сообщений: 1089 |
waszkiewicz, вернее (если я правильно понимаю сервер) в третьем случае ему достаточно индекса по prday, а в первых двух (особенно в первом) - он не уверен и идет сканировать? |
21 мар 16, 12:37 [18958426] Ответить | Цитировать Сообщить модератору |
invm Member Откуда: Москва Сообщений: 9687 |
Потому что оптимизатор счел это более выгодным. Укажите индекс хинтом и сравните оценки. |
21 мар 16, 12:37 [18958428] Ответить | Цитировать Сообщить модератору |
waszkiewicz Member Откуда: Сообщений: 1089 |
третий вариант отрабатывает 1 сек за 3 минуты результатов первого я не дождался |
||
21 мар 16, 12:38 [18958432] Ответить | Цитировать Сообщить модератору |
Konst_One Member Откуда: Сообщений: 11593 |
теперь понятно. индекс у вас не очень для такого запроса |
||||
21 мар 16, 12:40 [18958440] Ответить | Цитировать Сообщить модератору |
waszkiewicz Member Откуда: Сообщений: 1089 |
создать другой можно конечно, но есть но. Значения station (тот, что в where) могут в базу писать достаточно интенсивные устройства (причем пишут сразу в базу, без всякого буфера - тут я не при чем), поэтому включение еще и station (да и заодно rtype) может повлиять на процесс (ЯТД) Или не стоит переживать? База продуктивная, эмулировать ее поведение нет возможности |
||||
21 мар 16, 13:06 [18958607] Ответить | Цитировать Сообщить модератору |
Konst_One Member Откуда: Сообщений: 11593 |
я бы в индекс ix_proc_packs_prday сделал INCLUDE(extcode, weight) |
21 мар 16, 13:32 [18958752] Ответить | Цитировать Сообщить модератору |
WarAnt Member Откуда: Питер Сообщений: 2423 |
Если учесть что "какие то устройства" валят много инсертов, видимо статистика устаревает быстро, а обновляют её редко, вот и результат. |
||
21 мар 16, 13:47 [18958855] Ответить | Цитировать Сообщить модератору |
waszkiewicz Member Откуда: Сообщений: 1089 |
Да никто её не обновляет. Где почитать про обновление? |
||||
21 мар 16, 14:09 [18959003] Ответить | Цитировать Сообщить модератору |
Konst_One Member Откуда: Сообщений: 11593 |
https://msdn.microsoft.com/ru-ru/library/ms187348(v=sql.120).aspx |
21 мар 16, 14:16 [18959045] Ответить | Цитировать Сообщить модератору |
Все форумы / Microsoft SQL Server | ![]() |