Мне нужно проанализировать данные (~ 60000 строк) из файла CSV и записать их в таблицу MSSQL (данные Date/Time and Value, которая является десятичным числом). Каждый день я получаю один такой файл CSV. Уловка заключается в том, что в CSV-файле, который я получаю каждый день, у меня есть данные за последние 5 дней, что означает, что у меня есть данные для дат, которые я уже писал в прошлые дни, но мне нужно заменить их данными из файл.Лучшая практика: Удалить и вставить против обновления
Я пытаюсь решить между двумя методами: Bulk удалением старых данных, что мне нужно переписать, когда я получаю новый файл CSV, и INSERT, против нахождения каждой записи на основе даты & времени и ID и обновить его ,
1.Что является лучшей практикой, которая приведет к меньшим фрагментарным и техническим проблемам в моей базе данных?
- Какой будет дешевле с точки зрения производительности?
Если речь идет о выборе между ними, я предпочитаю сохранять свою БД в хорошей форме с высокой производительностью, потому что файл будет записан в ночное время в любом случае.
EDIT: В случае, если я добавлю план обслуживания, который ежедневно восстанавливает индексы после того, как я делаю массовое удаление и вставку новых данных, этого будет достаточно, чтобы избежать проблем с фрагментацией, или есть что-то, что я отсутствует?
Рассматривали ли вы 'MERGE '? –
Являются ли предыдущие 4 дня данных такими же, какие у вас уже есть? Так что вы на самом деле ничего не обновили бы? –
@ Да, спасибо, я никогда не слышал о «MERGE». Я изучил его сейчас, и мне кажется, может ли это сделать. Знаете ли вы последствия такого ежедневного «MERGE» в состоянии фрагментации базы данных? – LimS