SomewhereSomehow's Notes

Фильтр по тегу: estimates


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

Недавно на одном из форумов был задан вопрос о том, почему при добавлении в запрос условия isnumeric(column)=0, запрос начинает выполняться очень медленно. Изучение этой ситуации привело к интересным результатам.
Читать дальше…
добавлено: 23 окт 12 просмотры: 1051, комментарии: 0



RowGoal и неравномерное распределенных данных

На написание этой заметки меня подвиг доклад Алексея Эксаревского на 24 hours of PASS про наиболее частые причины ошибок в оценке кардинальности. Те, кто не видел этот доклад могут ознакомиться с ним на techdays.

Алексей рассказывает о возможных причинах неправильных оценок кардинальности (или количества строк), из-за чего оптимизатор выбирает неудачный план запроса. Наиболее интересным и нетривиальным мне показался один из последних рассмотренных случаев, когда на эти оценки влияет механизм RowGoal.

Я уже касался вкратце этого механизма, когда описывал вывод недокументированных флагов трассировки тут. Но на всякий случай повторюсь, чтобы было понятно, о чем речь.

RowGoal – это механизм оптимизатора, который позволяет основываясь на заранее известном числе строк, которые необходимо получить (например в запросе есть предложение Top N), ограничить число строк для обработки в более ранних операторах. Казалось бы, если мы заранее знаем число строк, то это позволит выбрать лучший план. И, как правило, это так, однако, при некотором особенном распределении данных, этот механизм может мешать.

Рассмотрим механику более подробно.
Читать дальше…
добавлено: 03 июл 12 просмотры: 1176, комментарии: 0