Мое предпочтение всегда заключалось в том, чтобы иметь отдельную таблицу с историей, только потому, что она устраняет необходимость иметь «WHERE Status =« LIVE »или« WHERE CurrentRecord = 1 »для получения последней записи (я не буду войдите в один проект, который требует встроенного запроса, чтобы получить максимальную (версию), чтобы получить последнюю). Это должно означать, что таблица текущих записей должна оставаться меньше, а время доступа может быть улучшено и т. Д. В худшем случае я видел, что запрос ad-hoc к таблице поднимает неправильную версию записи, вызывая все виды проблем позже.
Кроме того, если вы уже получаете историю из другой таблицы, вы можете очертить данные, поэтому вся история с одного года находится в одной таблице/db, а вся история из другой - в другой таблице/db и т. Д.
Отличный ответ. Я думаю, что это определенно зависит от дела. Некоторые таблицы останутся очень маленькими и не нуждаются в отдельной таблице. Я не думаю, что это хорошая практика иметь таблицу истории для каждой таблицы. – Eric