Хабр Курсы для всех
РЕКЛАМА
Практикум, Хекслет, SkyPro, авторские курсы — собрали всех и попросили скидки. Осталось выбрать!

Hash Match работал быстрее чем Nested Loops… Если не секрет, то в чем заключалась задача?IF (OBJECT_ID('dbo.test_table1') IS NOT NULL)
DROP TABLE dbo.test_table1
GO
IF (OBJECT_ID('dbo.test_table2') IS NOT NULL)
DROP TABLE dbo.test_table2
GO
CREATE TABLE dbo.test_table1
(
id INT IDENTITY(1, 1)
, date1 TIMESTAMP
, string VARCHAR(50)
)
CREATE TABLE dbo.test_table2
(
id INT IDENTITY(1, 1)
, date1 TIMESTAMP
, string VARCHAR(50)
)
DECLARE @counter INT = 20000
DECLARE @i INT = 0
WHILE(@i < @counter )
BEGIN
INSERT INTO [dbo].[test_table1]
([string])
VALUES
('1')
SET @i = @i + 1;
END
GO
DECLARE @counter INT = 20000
DECLARE @i INT = 0
WHILE(@i < @counter )
BEGIN
INSERT INTO [dbo].[test_table2]
([string])
VALUES
('1')
SET @i = @i + 1;
END
GO
SELECT COUNT(*)
FROM test_table1 AS T1 WITH(READUNCOMMITTED)
INNER HASH JOIN test_table2 AS T2 WITH(READUNCOMMITTED)
ON T1.id = T2.id
OPTION(MAXDOP 1)
SELECT COUNT(*)
FROM test_table1 AS T1 WITH(READUNCOMMITTED)
INNER LOOP JOIN test_table2 AS T2 WITH(READUNCOMMITTED)
ON T1.id = T2.id
OPTION(MAXDOP 1)
Как SQL Server каждые два-три часа переключался на использование не оптимального плана выполнения запроса