|
Insert #Table vs @Table
|
|||
---|---|---|---|
#18+
Здравствуйте! Ms sql server 2017 Почему вставка результата запроса во временную таблицу происходит намного быстрее нежели в табличную переменную (5 сек. против 35 сек) [dbo].[ssf_WordDifference] - CLR функция Код: sql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24.
... |
|||
:
Нравится:
Не нравится:
|
|||
11.02.2020, 10:25 |
|
Insert #Table vs @Table
|
|||
---|---|---|---|
#18+
Алексаша, желтые двойные стрелочки виноваты. SQL предпологает что в @ вставляется одна запись и не параллелит. OPTION (RECOMPILE) или далее по версиям варианты ... |
|||
:
Нравится:
Не нравится:
|
|||
11.02.2020, 10:28 |
|
Insert #Table vs @Table
|
|||
---|---|---|---|
#18+
TaPaK, там где двойные стрелочки это вставка во временную таблицу. т.е. их наличие в данном случае это хорошо, так? ... |
|||
:
Нравится:
Не нравится:
|
|||
11.02.2020, 10:40 |
|
Insert #Table vs @Table
|
|||
---|---|---|---|
#18+
Алексаша TaPaK, там где двойные стрелочки это вставка во временную таблицу. т.е. их наличие в данном случае это хорошо, так? ну понятие "хорошо" относительно :) Вообще табличные переменные это большая недоделка, которую постоянно пытаются довести до жизненной, так что по возможности не пользуйтесь ... |
|||
:
Нравится:
Не нравится:
|
|||
11.02.2020, 10:43 |
|
Insert #Table vs @Table
|
|||
---|---|---|---|
#18+
TaPaK, Спасибо, буду иметь в виду. ... |
|||
:
Нравится:
Не нравится:
|
|||
11.02.2020, 10:46 |
|
Insert #Table vs @Table
|
|||
---|---|---|---|
#18+
Алексаша, https://dba.stackexchange.com/questions/16385/whats-the-difference-between-a-temp-table-and-table-variable-in-sql-server Parallelism Queries that insert into (or otherwise modify) @table_variables cannot have a parallel plan, #temp_tables are not restricted in this manner. There is an apparent workaround in that rewriting as follows does allow the SELECT part to take place in parallel but that ends up using a hidden temporary table (behind the scenes) INSERT INTO @DATA ( ... ) EXEC('SELECT .. FROM ...') There is no such limitation in queries that select from table variables as illustrated in my answer here ... |
|||
:
Нравится:
Не нравится:
|
|||
11.02.2020, 11:05 |
|
Insert #Table vs @Table
|
|||
---|---|---|---|
#18+
Алексаша, не используйте табличную переменную,если предполагаете вставить более 100 строк. ... |
|||
:
Нравится:
Не нравится:
|
|||
11.02.2020, 12:06 |
|
Insert #Table vs @Table
|
|||
---|---|---|---|
#18+
Владислав Колосов, В моем случае даже если запрос ничего не возвращает, вставка в переменную 35 сек против 5. Вашу рекомендацию понял. ... |
|||
:
Нравится:
Не нравится:
|
|||
11.02.2020, 12:16 |
|
Insert #Table vs @Table
|
|||
---|---|---|---|
#18+
Алексаша даже если запрос ничего не возвращает, вставка в переменную 35 сек против 5. Так то не вставка, то ваши "функции" исполняются. ... |
|||
:
Нравится:
Не нравится:
|
|||
11.02.2020, 12:36 |
|
Insert #Table vs @Table
|
|||
---|---|---|---|
#18+
aleks222, почему мои функции в случае со вставкой во временную табл. быстрее работают? в 7 раз ... |
|||
:
Нравится:
Не нравится:
|
|||
11.02.2020, 14:44 |
|
Insert #Table vs @Table
|
|||
---|---|---|---|
#18+
Алексаша aleks222, почему мои функции в случае со вставкой во временную табл. быстрее работают? в 7 раз ответ в желтых стрелках ... |
|||
:
Нравится:
Не нравится:
|
|||
11.02.2020, 14:52 |
|
Insert #Table vs @Table
|
|||
---|---|---|---|
#18+
Алексаша, Вам же уже написали, с #-таблицами у вас план запроса использует параллелизм, с @-таблицами параллелизм использоваться не может. Параллельный план на достаточно большом объеме выборки данных в большинстве случаев работает быстрее последовательного. Поэтому и разница. ... |
|||
:
Нравится:
Не нравится:
|
|||
11.02.2020, 15:05 |
|
Insert #Table vs @Table
|
|||
---|---|---|---|
#18+
Я не люблю @ таблицы потому что с ними усложняется отладка допустим есть проблема в коле именя # , ## таблицы ты стопнулся и видишь данные а в @ нет тем не менее есть экзотические случаи когда можно заюзать как то на собесе меня спросили как вставить запись в лог если транзакция откаталась я не допер а ответ был в @ переменных - на них не действует rollback ps на текущей работе куча кода с @ переменными вообщем все работает - так что если все пишется нормально то и работатет оно также переписывать вообщем не получится да и не надо. ... |
|||
:
Нравится:
Не нравится:
|
|||
11.02.2020, 15:36 |
|
|
start [/forum/topic.php?fid=46&fpage=69&tid=1686509]: |
0ms |
get settings: |
9ms |
get forum list: |
13ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
32ms |
get topic data: |
11ms |
get forum data: |
3ms |
get page messages: |
50ms |
get tp. blocked users: |
2ms |
others: | 15ms |
total: | 141ms |
0 / 0 |