Поиск в таблице по списку ключей

Версия 7.1 от Alexandr Fokin на 2020/03/25 19:04

Задача:
Имеется таблица с записями Таблица1 (При этом размеры таблицы не малы)
Имеется список ключей List1 (Кол-во элементов в списке превышает 500)

Необходимо отобрать из Таблица1 значения, у которых поле key попадает в список List1.

Варианты реализации:
1) Использование оператора IN, в параметрах у которого перечислены все значения из List1.
2) Созданием временной таблицы в рамках запроса, наполнение таблицы значениями из List1, выполнить join между временной таблицой и Таблица1
(!При этом одна операция INSERT может вставить не более 1000 строк и если элементов больше, то потребуется несколько операций)
Реализация происходит в рамках sql запросов ado.net, без хранимых процедур. Время, затрачиваемое на построение запроса, не учитывается.

Кол-во записей с в Таблица1 Кол-во элементов в List1 Время выполнения (мс)
20000 1000 1 3887
    2 63

Ссылки:
https://metanit.com/sql/sqlserver/10.4.php
https://metanit.com/sql/sqlserver/10.3.php
https://info-comp.ru/programmirovanie/567-table-variables-in-ms-sql-server.html
https://www.cyberforum.ru/ado-net/thread1948686.html