Изменения документа Поиск в таблице по списку ключей
Редактировал(а) Alexandr Fokin 2023/12/16 14:13
От версии 18.1
отредактировано Alexandr Fokin
на 2020/03/28 22:39
на 2020/03/28 22:39
Изменить комментарий:
К данной версии нет комментариев
К версии 3.2
отредактировано Alexandr Fokin
на 2020/03/25 11:50
на 2020/03/25 11:50
Изменить комментарий:
Добавлен комментарий
Сводка
-
Свойства страницы (1 изменено, 0 добавлено, 0 удалено)
-
Объекты (1 изменено, 0 добавлено, 0 удалено)
Подробности
- Свойства страницы
-
- Содержимое
-
... ... @@ -8,146 +8,28 @@ 8 8 **Варианты реализации:** 9 9 1) Использование оператора IN, в параметрах у которого перечислены все значения из List1. 10 10 2) Созданием временной таблицы в рамках запроса, наполнение таблицы значениями из List1, выполнить join между временной таблицой и Таблица1 11 -(!При этом одна операция INSERT может вставить не более 1000 строк и если элементов больше, то потребуется несколько операций) 12 -Реализация происходит в рамках sql запросов ado.net, без хранимых процедур. Время, затрачиваемое на построение текста запроса, не учитывается. 13 -3) Использование xml переменной, данные из которой используются для операции join с Таблица1. 14 14 15 15 {{html}} 16 16 <table style="height: 179px; width: 620px;"> 17 17 <tbody> 18 - <tr> 19 - <td>Кол-во записей с в Таблица1</td> 20 - <td>Кол-во элементов в List1</td> 21 - <td>Кол-во запусков</td> 22 - <td>№</td> 23 - <td>Среднее время выполнения (мс)</td> 24 - 25 - 26 - </tr> 27 - <tr> 28 - <td>20000</td> 29 - <td>1000</td> 30 - <td>50</td> 31 - <td>1</td> 32 - <td>97</td> 33 - </tr> 34 - <tr> 35 - <td> </td> 36 - <td> </td> 37 - <td> </td> 38 - <td>2</td> 39 - <td>70</td> 40 - </tr> 41 - <tr> 42 - <td> </td> 43 - <td> </td> 44 - <td> </td> 45 - <td>3</td> 46 - <td>34</td> 47 - </tr> 48 - 49 - 50 - <tr> 51 - <td> </td> 52 - <td>2000</td> 53 - <td>50</td> 54 - <td>1</td> 55 - <td>202</td> 56 - </tr> 57 - <tr> 58 - <td> </td> 59 - <td> </td> 60 - <td> </td> 61 - <td>2</td> 62 - <td>126</td> 63 - </tr> 64 - <tr> 65 - <td> </td> 66 - <td> </td> 67 - <td> </td> 68 - <td>3</td> 69 - <td>60</td> 70 - </tr> 71 - 72 - 73 - <tr> 74 - <td> </td> 75 - <td>4000</td> 76 - <td>50</td> 77 - <td>1</td> 78 - <td>423</td> 79 - </tr> 80 - <tr> 81 - <td> </td> 82 - <td> </td> 83 - <td> </td> 84 - <td>2</td> 85 - <td>247</td> 86 - </tr> 87 - <tr> 88 - <td> </td> 89 - <td> </td> 90 - <td> </td> 91 - <td>3</td> 92 - <td>82</td> 93 - </tr> 94 - 95 - 96 - <tr> 97 - <td>1000000</td> 98 - <td>15</td> 99 - <td>50</td> 100 - <td>1</td> 101 - <td>12</td> 102 - </tr> 103 - <tr> 104 - <td> </td> 105 - <td> </td> 106 - <td> </td> 107 - <td>2</td> 108 - <td>15</td> 109 - </tr> 110 - <tr> 111 - <td> </td> 112 - <td> </td> 113 - <td> </td> 114 - <td>3</td> 115 - <td>19</td> 116 - </tr> 117 - 118 - 119 - <tr> 120 - <td> </td> 121 - <td>1000</td> 122 - <td>20</td> 123 - <td>1</td> 124 - <td>12</td> 125 - </tr> 126 - <tr> 127 - <td> </td> 128 - <td> </td> 129 - <td> </td> 130 - <td>2</td> 131 - <td>15</td> 132 - </tr> 133 - <tr> 134 - <td> </td> 135 - <td> </td> 136 - <td> </td> 137 - <td>3</td> 138 - <td>19</td> 139 - </tr> 140 - 15 +<tr> 16 +<td>Кол-во записей с в Таблица1</td> 17 +<td>Кол-во элементов в List1</td> 18 +<td>№</td> 19 +<td>Время выполнения (мс)</td> 20 +</tr> 21 +<tr> 22 +<td>20000</td> 23 +<td>1000</td> 24 +<td>1</td> 25 +<td>3887</td> 26 +</tr> 27 +<tr> 28 +<td> </td> 29 +<td> </td> 30 +<td>2</td> 31 +<td>63</td> 32 +</tr> 141 141 </tbody> 142 142 </table> 143 143 {{/html}} 144 - 145 -Выводы 146 -При малом размере списка List1 < 100, имеет IN выдает более быстреый результат. 147 -При большем размере join показывает себя лучше 148 - 149 -Ссылки: 150 -https://metanit.com/sql/sqlserver/10.4.php 151 -https://metanit.com/sql/sqlserver/10.3.php 152 -https://info-comp.ru/programmirovanie/567-table-variables-in-ms-sql-server.html 153 -https://www.cyberforum.ru/ado-net/thread1948686.html
- XWiki.XWikiComments[0]
-
- Комментарий
-
... ... @@ -1,12 +1,9 @@ 1 1 1) 2 -{{code language="sql"}} 3 3 select * 4 4 from dbo.MainEntities 5 5 where I in (1000,1001,1002 ...) 6 -{{/code}} 7 7 8 8 2) 9 -{{code language="sql"}} 10 10 DROP TABLE IF EXISTS #TmpData 11 11 12 12 CREATE TABLE #TmpData ... ... @@ -23,19 +23,3 @@ 23 23 JOIN dbo.MainEntities me on td.ID = me.I 24 24 25 25 DROP TABLE IF EXISTS #TmpData 26 -{{/code}} 27 - 28 -3) 29 -{{code language="sql"}} 30 -Declare @idList xml = ' 31 -<ArrayOfInt> 32 - <int>1000</int> 33 - <int>1001</int> 34 - ... 35 -</ArrayOfInt>' 36 - 37 -Select 38 - me.* 39 -From @idList.nodes('/ArrayOfInt/int') AS idList(id) 40 - JOIN dbo.MainEntities me on idList.id.value('.', 'int') = me.I 41 -{{/code}}