|
Два подхода к обновлению данных
|
|||
---|---|---|---|
#18+
Господа, часто возникает необходимость обновлять в таблице некий диапазон данных. Простейшее решение, к которому многие прибегают -- это "все удалить -- все вставить". Код: sql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17.
Но существует другой подход -- провести подробное сравнение и обновить только то, что нужно. Код: 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. 25. 26. 27.
Второй подход естественно требует более громоздкого кода. Вопрос: при каких обстоятельствах с точки зрения производительности стоит прибегать к первому, а в каких ко второму подходу? И как определить грань, где какой будет оптимален? ... |
|||
:
Нравится:
Не нравится:
|
|||
03.03.2020, 10:38 |
|
Два подхода к обновлению данных
|
|||
---|---|---|---|
#18+
При больших объемах, но небольших приращениях "вставить все" это очень неоптимально. Грань определяется только импирически. ... |
|||
:
Нравится:
Не нравится:
|
|||
03.03.2020, 10:41 |
|
Два подхода к обновлению данных
|
|||
---|---|---|---|
#18+
a_voronin, если вам нужна высокая доступность, то делайте через переключение секций. Таблицу на замещение секции можно заполнить вставкой, если это быстрее. ... |
|||
:
Нравится:
Не нравится:
|
|||
03.03.2020, 11:51 |
|
Два подхода к обновлению данных
|
|||
---|---|---|---|
#18+
Владислав Колосов, Речь идет о тонком обновлении, которое может включать применительно к конкретным записям INSERT UPDATE DELETE NOCHANGE. Соответственно никакое переключение секций тут не поможет. Разве что делать обновление в соседней таблице и потом перегонят и инкремент. ... |
|||
:
Нравится:
Не нравится:
|
|||
03.03.2020, 11:53 |
|
Два подхода к обновлению данных
|
|||
---|---|---|---|
#18+
a_voronin, IMHO, Если таблица Х - обычная, то при наличии необходимых индексов (см. Optimizing MERGE Statement Performance ) и прочих условий MERGE может быть быстрее. А может и не быть - в вашем "простом" примере удаление идет с фильтром по DT, если по нему есть индекс - DELETE + INSERT может быть быстрее, не требуется сличать записи по ключу DT+VAL. Если таблица типа columnstore, то DELETE + INSERT однозначно выигрывает у MERGE. ... |
|||
:
Нравится:
Не нравится:
|
|||
03.03.2020, 14:50 |
|
|
start [/forum/topic.php?fid=46&msg=39933410&tid=1686395]: |
0ms |
get settings: |
9ms |
get forum list: |
13ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
34ms |
get topic data: |
11ms |
get forum data: |
3ms |
get page messages: |
42ms |
get tp. blocked users: |
1ms |
others: | 15ms |
total: | 136ms |
0 / 0 |