У меня есть база данных с одной таблицей, которая отслеживает состояние пользователя. Когда я закончил обработку строки, ее больше не нужно хранить в базе данных и ее можно удалить.Увеличение производительности запроса от удаления строк в базе данных SQL?
Теперь можно сказать, что я хотел отслеживать строку вместо ее удаления (для исторических целей, аналитики и т. Д.). Было бы лучше:
Оставьте данные в одной таблице и отметьте строку, как «использовать» (с дополнительным столбцом или что-то подобное)
Удалить строку из таблицы и вставьте его в отдельную таблицу, которая создается только для исторических целей
для выбора # 1, интересно, оставляя ненужные строки в базе данных начинает влиять на производительность запросов. (Все мои запросы указаны на индексированных столбцах, так что, может быть, это не имеет значения?)
Для выбора № 2 интересно, будет ли постоянное удаление строк в конечном итоге вызвать такие проблемы, как фрагментация?
Ах, это для mysql. Не следует отмечать оба. – jnortey
Для выбора # 2 - вместо удаления строк после их переноса в другую таблицу - не могли бы вы их повторно использовать. Отметьте строку как более не используемую и найдите ее, когда вам нужно отслеживать текущее состояние и использовать сначала найденное - если ни один не добавляет дополнительную запись. Таким образом, вы избегаете фрагментации. Не сказать, что это хорошее решение - просто способ избежать фрагментации, если вы спуститесь по этому маршруту. – PaulF
Спасибо за предложение PaulF, однако я бы хотел избежать дублирования данных, если это возможно. – jnortey