Как максимально быстро перенести данные между двумя идентичными таблицами в разных схемах?
Интересует именно максимально быстрый алгоритм. Есть ещё условие, что перед переносом целевую таблицу можно очищать. На ум приходят обыкновенный INSERT с выдачей грантов перед этим, но, может быть, есть более эффективные с точки зрения производительности варианты?
Да, спасибо. это сразу напрашивающийся метод. Интересно просто, есть ли какие-то приёмы для ускорения процесса. К примеру, хинты какие-то или другие методы
velu, по части MS-SQL server я не специалист. Но знающие говорят что CTAS (create table as select)
работает быстрее чем insert from select на некоторых типах DBMS.
Это связано с тем что операция CTAS рассматривается как атомарная и не-транзакционная. Грубо говоря
она работает быстрее потому-что ей не нужен WAL/Redo-log.
Но для CTAS вам нужно убить старую таблицу и после популяции строк добавить все права и привилегии
и констрейнты и триггеры и индексы. А это гиморрно и обычно делают первый вариант.
Я советую не париться и просто делать первый вариант. Перфекционизм несет другие более
сложные технические долги. Лучше без перфекционизма если это сильно на бизнес не влияет.