Добро пожаловать в форум, Guest >> Войти | Регистрация | Поиск | Правила | | В избранное | Подписаться | ||
Все форумы / Microsoft SQL Server |
![]() ![]() |
ShIgor Member Откуда: Нижний Новгород Сообщений: 2380 |
(sql2017, sql2019) столкнулся с такой проблемой (смотрим на картинке) это отправная точка более навороченного запроса, и приводит оно к тому, что навороченный запрос в первом случае работает 20s, во втором 200ms с хинтом option(use hint('FORCE_LEGACY_CARDINALITY_ESTIMATION')) или option(recompile) ((что вообще странно)) первый запрос работает так же как и второй. с parameter sniffing = OFF, наоборот, второй работает как первый. может кто объяснить поведение и для чего это сделано? К сообщению приложен файл. Размер - 58Kb |
15 янв 21, 16:03 [22263981] Ответить | Цитировать Сообщить модератору |
msLex Member Откуда: Сообщений: 8730 |
Какой тип у t._Date_Time? Что будет, если getdate()-10 заменить на dateadd(...) ? |
15 янв 21, 16:08 [22263987] Ответить | Цитировать Сообщить модератору |
ShIgor Member Откуда: Нижний Новгород Сообщений: 2380 |
msLex, ничего не изменилось. да хоть так declare @fromdate datetime = '20210105' select * from _Document151 t where t._Date_Time >= @fromdate; select * from _Document151 t where t._Date_Time >= '20210105'; |
15 янв 21, 16:23 [22263999] Ответить | Цитировать Сообщить модератору |
Владислав Колосов Member Откуда: Сообщений: 8346 |
ShIgor, надо бы статистики пересчитать в таком случае. |
15 янв 21, 16:34 [22264010] Ответить | Цитировать Сообщить модератору |
ShIgor Member Откуда: Нижний Новгород Сообщений: 2380 |
Владислав Колосов, первым делом. |
15 янв 21, 16:35 [22264012] Ответить | Цитировать Сообщить модератору |
Владислав Колосов Member Откуда: Сообщений: 8346 |
ShIgor, вообще интересно, 10% времени занимает скан, а 90% на что уходит? PS понял, это объёмы. Сообщение было отредактировано: 15 янв 21, 16:34 |
15 янв 21, 16:38 [22264018] Ответить | Цитировать Сообщить модератору |
msLex Member Откуда: Сообщений: 8730 |
|
||||
15 янв 21, 16:41 [22264023] Ответить | Цитировать Сообщить модератору |
ShIgor Member Откуда: Нижний Новгород Сообщений: 2380 |
Владислав Колосов, не, % это Actual/Estimated |
15 янв 21, 16:41 [22264025] Ответить | Цитировать Сообщить модератору |
Владислав Колосов Member Откуда: Сообщений: 8346 |
ShIgor, засекретили секционирование? Почему просмотренные объемы разные? |
15 янв 21, 16:41 [22264026] Ответить | Цитировать Сообщить модератору |
ShIgor Member Откуда: Нижний Новгород Сообщений: 2380 |
Владислав Колосов, нет секционирования никакого просмотренные объемы одинаковые (синим) разница только в оценке (красным) тип поля datetime2, но и declare @fromdate datetime2 - никакого влияния не оказывает, проверял Сообщение было отредактировано: 15 янв 21, 16:41 |
15 янв 21, 16:43 [22264030] Ответить | Цитировать Сообщить модератору |
ShIgor Member Откуда: Нижний Новгород Сообщений: 2380 |
(не прицепилось чего-то) К сообщению приложен файл. Размер - 74Kb |
15 янв 21, 16:48 [22264040] Ответить | Цитировать Сообщить модератору |
invm Member Откуда: Москва Сообщений: 9646 |
ShIgor, Что-то вы не договаривете или не показываете.... В обоих показанных запросах - скан кластерного. Поэтому можно обоцениваться, но время работы должно быть примерно одинаковое. А настолько разное оно будет, только если один из планов параллельный. |
15 янв 21, 17:34 [22264087] Ответить | Цитировать Сообщить модератору |
ShIgor Member Откуда: Нижний Новгород Сообщений: 2380 |
invm, в приведенном примере вытащил все что мог.. никаких недоговорок. и по времени/скорости/io статистике запросы практически не отличаются. разница только в оценке другое дело навороченный запрос, там 6 сущностей (на _Document151 change tracking), выборка по изменениям с последней запрошенной версии (немного, 1-3 записей в документе + 5-10 из табличных частей) и все это оборачивается в xml. результирующий XML не больше 20Кб однако поведение абсолютно такое-же, с параметром - 20!!! секунд, с вычислением или в LEGACY_CARDINALITY_ESTIMATION 0,2сек. и источник проблемы именно в том, что неверная оценка практически на каждом этапе в плане, начиная вот с этого 151 документа. грешил на СТ. отключал - не помогло уровень совместимости на базах (от 110 (тоже не понял, вроде это legacy) до - 150) - не помогло делал копии таблиц в другую базу - не помогло на другой сервер (2016) - не помогло осталось MAX_DOP на базе в 0 поставить, стоит 1, поэтому никаких параллельных планов пока. |
15 янв 21, 19:05 [22264122] Ответить | Цитировать Сообщить модератору |
invm Member Откуда: Москва Сообщений: 9646 |
ShIgor, Ваш пример не отражает проблему. Оценка для предиката с неизвестным значением (для переменной) будет по числу сирок в таблице, а с известным (константа) по статистике. Лучше давайте актуальные планы быстрого и медленного запроса. |
15 янв 21, 19:39 [22264147] Ответить | Цитировать Сообщить модератору |
Все форумы / Microsoft SQL Server | ![]() |