SomewhereSomehow |
---|
т.е. вот так да? исключив полностью данные, вы решили не давать шансов оптимизатору? =) |
Баг на баге.

Доколе железная логика будет стоять ниже статистики, а это один из 100500 случаев. Будем регить.
SomewhereSomehow |
---|
перестаем дурить оптимизатор |
Ну он сам виноват, что тупой.

SomewhereSomehow, вы правы. Удивительно что в реальности в основном совпадает как у меня в примере. Ибо переписывал кучу запросов, т.к. план был мерзопакостный.
SomewhereSomehow |
---|
когда-то давно я переписывал запросы |
Это большая ошибка, планы надо смотреть
всегда. Вы забыли основную проблему? -
время оптимизации ограниченно Поэтому на сложных запросах (не этих детских шалостей) такое не канает. Это первое.
SomewhereSomehow |
---|
что везде в простых случаях |
Во во. Это вы понимаете. Не лениво вносить "разнообразие"?
Второе, дописывать руками в
GROUP BY ради лени - вброс не засчитан (ну разве что на мелких запросах) ибо
WITH короче, и самое главное
понятнее. Мухи, котлеты и всё такое.
Скажу одно, выражение "тяжело лопатить много текста" не верно. Нет оно верно для вас например, но не верно для меня. Какгрится "Что не убивает - делает нас сильней". Лопатив гигабайты кода скилл увеличивается на пару порядков, поэтому выровнять кривые руки во всём коде не тяжелее, чем написать маленький костыль.
Не лень двигатель, а прямые мозги. Уберёте лень - получите гениальность. Так что не ленитесь. ;)SomewhereSomehow, спасибо. Ещё одна тема! Жаль что пора отпусков, iljy и других нет на месте (форум мёртвый).
Оптимизатор часто тупит, и рассчитывать на повышение на более высокий уровень логического вывода даже не приходится.
Повторюсь: Почему
железная логика стоит ниже статистики
?Давайте опять "обдурим" оптимизатор и поставим везде LEFT:
LEFT JOIN dbo.Author A ON A.ID = M.Author
Всё, план опять съехал.
И не лень учитывать столько факторов? Может проще писать одинаково, просто и надёжно.
И меня это напрягло, а вот почему:
Частенько во
VIEW пишу LEFT из-за одной очень удобной особенности (но в целом тупости) оптимизатора - только так он исключает таблицу из запроса, если не были выбраны по ней колонки.
По идее он должен был убрать и при простом JOIN, зачем же бесполезно проверять повторно существование строки при
CHECK-нутом
FOREIGN KEY?