Оптимизатор стабильно ошибается в подсчете строк и подставляет непонятные предикаты

1. leonidkorolev 108 30.11.22 11:13 Сейчас в теме
На сколько я понял, из-за этого Index Seek запрос тормозит.
Что это за соединение Nested Loops c константами? Где эти константы посмотреть.
Не могу найти их фактические значения. В Computer Scalar в поле Defined values пусто.

У меня только один предикат на меньше. А больше оптимизатор сам поставил. Почему и зачем?

Статистика свежая. Есть индекс по предикату. Оптимизатор должен чётко подсчитать количество строк.
Но сильно ошибается. Там действительно примерно 82000 строк.

Чем отличается Estimated rows от Estimated rows to be Read.

В Estimated rows to be Read более правильно значение. И если бы он так подсчитал, то скорей всего был бы другой план и соотв. не тормозил.
Прикрепленные файлы:
Ответы
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
2. RustamZz 30.11.22 12:07 Сейчас в теме
(1) А сам запрос покажете?
3. leonidkorolev 108 30.11.22 13:33 Сейчас в теме
Вроде разобрался. Проблему локализовал. Теперь буду думать как дальше жить с этим.
Ноги растут отсюда
http://www.queryprocessor.ru/rowgoal-on-non-uniform-distribution/
4. winapi 60 30.11.22 15:10 Сейчас в теме
Если статистика норм, то попробуйте сам индекс перестроить. Очень похоже на поиск в индексе - там же отсекается та часть, в которой точно нет значений для оптимизации (типо бинарный поиск или т.п).
Оставьте свое сообщение

Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот