Вопрос

Я хотел бы знать, есть ли какие -либо правила о порядке INNER JOINS в T-SQL 2000.

У меня было 62 -кратное представление на моем запросе, когда мой INNER JOIN Это действует как фильтр сначала помещается, а не конец.

В ссылке http://sql-4-life.blogspot.com/2009/03/order-of-inner-joins.html

Это было полезно?

Решение

Оптимальная последовательность (план запроса) определяется исполнителем запроса на основе кода SQL (операторы, которые вы используете), статистику данных (статистическое распределение значений в столбцах, объем данных и т. Д.) и структуру базы данных (доступность индексов, Дататипы и т. Д.). Таким образом, есть правила, но во -первых, не все из них находятся под вашим общим контролем, а во -вторых, результат определяется комбинацией многих факторов.

Чтобы оценить производительность, вы всегда должны взглянуть на предполагаемый план запроса и сравнить изменения в плане, вызванные изменениями в вашем коде SQL, чтобы покончить с тем, почему запрос работает быстрее или медленнее, чем другое.

Другие советы

Заказ, который вы пишете, не является актуальным. Большинство, если не все, оптимизаторы (и, конечно, оптимизатор SQL-Server) знают, что JOIN ассоциативно и коммутативен.

Поиск наилучшего плана выполнения (что означает «Соединение порядка», «Присоединение к алгоритму» для каждого соединения, выбор индексов для использования и т. Д.) - очень сложная проблема, которая именно была создана для решения оптимизаторов запросов, и они используют различную и сложную эвристику и методы Анкет Но порядок, который мы пишем соединения в наших запросах, не принимается во внимание, если только (возможно) в качестве отправной точки.

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

Если я не ошибаюсь, Имитация отжига является одной из эвристики/методов, используемых Оптимизатор запросов SQL Server.
(Я был неправ)

Лицензировано под: CC-BY-SA с атрибуция
Не связан с dba.stackexchange
scroll top