Лучшие практики по обновлению SQL-операторов для NCI dateKey в большой таблице фактов

У меня есть таблица фактов 55 Гб, где я должен удалить некоторые записи, которые позже можно будет вернуть обратно. Количество удаленных записей варьируется от 10 до 100 тысяч.

В настоящее время моя стратегия удаления основана на следующем: я обновляю dateKey для удаляемых записей, например, с положительного значения int 20080122 до отрицательного значения int -20080122, чтобы фильтры текущей даты не включали его.

Здесь я думаю о том, что вместо перемещения данных в таблицу фактов и обратно я делаю дату из диапазона дат фильтра, а затем перемещаю ее обратно в диапазон дат с возможностью фильтрации с помощью обновлений dateKey.

Мне бы хотелось услышать ваше мнение об этой стратегии удаления, особенно в отношении поведения NCI (некластеризованного индекса). Как вы думаете, обновление индексированного dateKey лучше, чем перемещение реальных данных?

1 ответ

Решение

Вместо повторного назначения dateKey Наша стандартная практика заключается в добавлении в таблицу столбца "мягкого удаления", либо битового столбца "is_deleted", либо столбца даты и времени "delete_on", и использования этого столбца для фильтрации "удаленных" строк.

Это требует больше работы с вашей стороны, так как все ваши существующие запросы придется изменить, чтобы использовать этот новый столбец, но теперь вашей базе данных не нужно выполнять работу по повторной индексации или удалению / вставке фактических данных.

Другие вопросы по тегам