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

Последние авторы
1
2 **Задача:**
3 Имеется таблица с записями Таблица1 (При этом размеры таблицы не малы)
4 Имеется список ключей List1 (Кол-во элементов в списке превышает 500)
5
6 Необходимо отобрать из Таблица1 значения, у которых поле key попадает в список List1.
7
8 **Варианты реализации:**
9 1) Использование оператора IN, в параметрах у которого перечислены все значения из List1.
10 2) Созданием временной таблицы в рамках запроса, наполнение таблицы значениями из List1, выполнить join между временной таблицой и Таблица1
11 (!При этом одна операция INSERT может вставить не более 1000 строк и если элементов больше, то потребуется несколько операций)
12
13 {{html}}
14 <table style="height: 179px; width: 620px;">
15 <tbody>
16 <tr>
17 <td>Кол-во записей с в Таблица1</td>
18 <td>Кол-во элементов в List1</td>
19 <td>№</td>
20 <td>Время выполнения (мс)</td>
21 </tr>
22 <tr>
23 <td>20000</td>
24 <td>1000</td>
25 <td>1</td>
26 <td>3887</td>
27 </tr>
28 <tr>
29 <td>&nbsp;</td>
30 <td>&nbsp;</td>
31 <td>2</td>
32 <td>63</td>
33 </tr>
34 </tbody>
35 </table>
36 {{/html}}
37
38 Ссылки:
39 https://metanit.com/sql/sqlserver/10.4.php
40 https://metanit.com/sql/sqlserver/10.3.php
41 https://info-comp.ru/programmirovanie/567-table-variables-in-ms-sql-server.html
42 https://www.cyberforum.ru/ado-net/thread1948686.html