#sql #sql-server
Вопрос:
У меня есть таблица с 58 миллионами записей. Я хочу скопировать отсортированные(по дате) данные во вторую таблицу(с индексом CCI). Вставка должна быть в едином пакете размером 1 м записей (это делается для того, чтобы избежать обрезки объемной загрузки для CCI).
псевдокод для выбора пакетной записи:
SELECT TOP (@batchsize) WITH TIES FROM original_table
WHERE original_table.dateKey BETWEEN @start_dateKey AND @end_dateKey
дата начала обновления
SELECT @start_dateKey = MAX(dateKey)
FROM
(
SELECT TOP (batchsize) FROM original_table WHERE original_table.date
BETWEEN @start_dateKey AND @end_dateKey
)
@start_dateKey = @start_dateKey 1
- Я использую WITH TIES, чтобы получить все записи для заданного диапазона дат
, который может быть не точным 1 м. В случае, если я удалю «С ПРИВЯЗКАМИ», я, возможно, не
смогу получить повторяющиеся значения для данного диапазона дат, и я могу пропустить значения, как только увеличу start_date. У меня действительно есть
уникальный идентификатор, но он упорядочивается случайным образом, как только мы сортируем по
дате, и может не помочь разорвать СВЯЗИ. - ROW_NUMBER может помочь, но мне интересно, может ли это привести к несоответствию данных, поскольку номер строки изменяется при вставке данных.
Есть ли что-нибудь еще, что могло бы помочь?
Примечание : значение даты int будет выглядеть примерно как 20201020 (2020-10-20)
Комментарии:
1. Я попросил перенести это в dba.se — в будущем задавайте вопрос только на одном сайте.