У меня есть 2 таблицы, рассмотрим ТАБЛИЦУ А и ТАБЛИЦУ Б. В ТАБЛИЦЕ А записано 5 миллионов записей, а в ТАБЛИЦЕ Б - 20 тыс. Записей. Я соединяю большую таблицу с маленькой таблицей, где я проверяю запись ТАБЛИЦЫ А с каждой записью таблицы Б.
DECLARE @Large TABLE (INN BIGINT,OUTT BIGINT )
INSERT INTO @Large (INN,OUTT)values (11356686,2101189)
INSERT INTO @Large (INN,OUTT)values (11369336,2101301)
INSERT INTO @Large (INN,OUTT)values (11358687,2101487)
INSERT INTO @Large (INN,OUTT)values (11369337,2101609)
DECLARE @small TABLE (INN BIGINT,OUTT BIGINT )
INSERT INTO @small (INN,OUTT)values (11356686,2101189)
INSERT INTO @small (INN,OUTT)values (11369337,2101609)
БОЛЬШОЙ:
INN OUTT
11356686 2101189
11369336 2101301
11358687 2101487
11369337 2101609
МАЛЕНЬКИЙ:
INN OUTT
11356686 2101189
11369337 2101609
Мой запрос:
Select CASE WHEN T.INN IS NULL THEN O ELSE 1 END from @LARGE T
LEFT JOIN @SMALLTT
ON T.INN = TT.INN AND T.OUTT = TT.OUTT
Что касается таблиц, они хорошо проиндексированы, и в плане выполнения даже нет намеков на добавление дополнительных индексов.
Может ли кто-нибудь подсказать мне, что мне делать на уровне запросов, чтобы быстрее получать результаты, такие как CROSS APPLY, HASH JOIN и т. Д .;