
SQL Server 2019 — версия: 15.0.4430.1
Описание: KB5054833
Скачать: SQLServer2019-KB5054833-x64.exe
SQL Server 2019 — версия: 15.0.4430.1
Описание: KB5054833
Скачать: SQLServer2019-KB5054833-x64.exe
Автор: Craig Freedman Implied Predicates and Query Hints
В этой статье будут рассмотрены некоторые странности с
предикатами в планах запросов. Рассмотрим следующую тривиальную схему и запрос:
CREATE TABLE T1 (A INT, B INT)
CREATE TABLE T2 (A INT, B INT)
SELECT *
FROM T1 INNER JOIN T2 ON T1.A = T2.A
WHERE T1.B = 0
OPTION (HASH JOIN)
Как и задумывалось, этот запрос будет выполняться со следующим планом:
|--Hash Match(Inner Join,
HASH:([T1].[A])=([T2].[A]), RESIDUAL:([T2].[A]=[T1].[A]))
|--Table
Scan(OBJECT:([T1]), WHERE:([T1].[B]=(0)))
|--Table Scan(OBJECT:([T2]))
На самом деле, этот запрос получит такой план с подсказкой или без нее. Теперь давайте внесем небольшое изменение в предложение WHERE и посмотрим, что произойдет:
SELECT *
FROM T1 INNER JOIN T2 ON T1.A = T2.A
WHERE T1.A = 0
OPTION (HASH JOIN)
Теперь этот запрос выдает сообщение об ошибке:
Msg 8622, Level 16, State 1, Line 1
Query processor could not produce a query plan because of the hints defined in this query. Resubmit the query without specifying any hints and without using SET FORCEPLAN.
SQL Server 2019 — версия: 15.0.4420.2
Описание: KB5049296
Скачать: SQLServer2019-KB5049296-x64.exe
Описание: KB5048038
Скачать: SQLServer2022-KB5048038-x64.exe
Дата выпуска: 16 января 2025 г.
SQL Server 2019 — версия: 15.0.4415.2
Описание: KB5049235
Скачать: SQLServer2019-KB5049235-x64.exe
SQL Server 2019 — версия: 15.0.4405.4
Описание: KB5046365
Скачать: SQLServer2019-KB5049235-x64.exe
Описание: KB5048033
Скачать: SQLServer2022-KB5048038-x64.exe
Дата выпуска: 14 ноября 2024 г.
Автор: Craig Freedman OPTIMIZED Nested Loops Joins
В предыдущих двух статьях мы рассмотрели при каких условиях SQL Server может добавить сортировку на внешней стороне соединения вложенных циклов и как эта сортировка может повысить производительность. А чуть раннее мы увидели как SQL Server может использовать упреждающую случайную выборку для повышения производительности соединения вложенных циклов. В этой статье давайте исследуем еще одну возможность повышения производительности соединения вложенных циклов. Я буду использовать ту же базу данных, которую использовал в двух предыдущих статьях.
Автор: Craig Freedman Optimizing I/O Performance by Sorting – Part 2
В предыдущей части мы рассмотрели, как SQL Server использует сортировку для преобразования случайных операций ввода-вывода в последовательные. В этой части давайте наглядно продемонстрируем, как такая сортировка может повлиять на производительность. Для проверки я буду использовать ту же базу данных размером 3 ГБ, которая была создана в первой части.