SQL Server автоматически отбрасывает ненужные объединения? - PullRequest
1 голос
/ 27 июля 2010

Если я отправлю запрос в SQL Server 2005, который содержит ряд предложений LEFT JOIN, к которым таблица, к которой присоединяются, никогда не ссылается, произойдет ли объединение, или SQL Server достаточно умен, чтобы их отбросить?

Очевидно, что не удастся отбросить ВНУТРЕННИЕ СОЕДИНЕНИЯ [ложное предположение!см. ответы], поскольку это потенциально может изменить результат, но может ли он сделать это для Левых соединений?

Ответы [ 2 ]

4 голосов
/ 27 июля 2010

Это может отбросить оба ВНУТРЕННИЕ и ЛЕВЫЕ СОЕДИНЕНИЯ путем проверки ограничений. Если вы не используете столбец в таблице и существует гарантированное существование одной строки с помощью ограничения (FK), то таблицу использовать не нужно. Очевидно, что это зависит от запроса, возможно, что таблица все еще используется, потому что это лучший план.

Это еще одна причина, по которой ограничения чрезвычайно полезны и их следует рассматривать чаще, чем они часто используются в проектах.

3 голосов
/ 27 июля 2010

Левое объединение может потенциально умножить ваш набор результатов, если имеется много совпадений.

Таким образом, оно все равно будет оцениваться.

...