Сейчас ВОВА в комментариях показал, что не все понимают, как работает SQL сервер. Это нормально, если вы не работали с оптимизацией достаточно долгое время, чтобы знать, как работает оптимизатор SQL Server. А в боьшинстве случаев он работает отлично и иногда даже откровенно тупой запрос может выполнить быстро. Было предложение перенести одно из сравнений в on. Просто для прикола, возьмите и напишите вот такой запрос:
select * from Table1 a inner join Table2 at on a.ID = at.ID
Замерьте план его выполнения и замерьте статистику (set statistics io on). Для замера статистики выполните запрос пару раз.
А вот теперь напишите запрос вот так:
select * from Table1 a inner join Table2 at on 1=1 where a.ID = at.ID
Он возвращает абсолютно то же самое и самое банальное - SQL сервер достаточно сообразительный, чтобы увидеть, что эти запросы совершенно одинаковы и поэтому план выполнения у них будет совершенно одинаковым и статистика будет до логического чтения одинаковой. Я на 100% уверен в этом.
Понравилось? Кликни Лайк, чтобы я знал, какой контент более интересен читателям. Заметку пока еще никто не лайкал и ты можешь быть первым
Да, исходников оптимизатора у меня нет. Но, смею предположить, что его делали люди... и ему надо стараться помочь выполнить свою работу.
А, запросы, из ТОЙ заметки (http://www.flenov.info/blog.php?catid=1443) и приводимые здесь - совсем не равнозначные по степени нагрузки.
Смысл один и тот же. Можешь добавить еще один inner join, от перемены мест слагаемых, оптимизатор SQL Server хуже работать не станет. Ведь оптимизатор смотрит не на то, где у тебя стоит условие, а на то, какой результат ты хочешь получить. А SQL - это всего лишь язык.
Иногда перемена мест слагаемых меняет план выполнения, но далеко не всегда.
Твои слова да богу в уши. Когда инструментарий станет абсолютным, - программирование превратиться в чистое искусство (или, примитивное ремесло).
Попыток было много, и будем надеяться, что не переведуться умные, ответственные дяди с горящими глазами.
А, оптимизатор смотрит может быть и верно, и даже видет цель.
Но, как он идет к этой цели - вопрос.
Хотите найти еще что-то интересное почитать? Можно попробовать отфильтровать заметки на блоге по категориям.