На данный момент у меня есть таблица в mysql, которая записывает транзакции. Эти транзакции могут обновляться пользователями - иногда никогда, иногда часто. Однако мне нужно отслеживать изменения для каждого поля в этой таблице. Итак, на данный момент я имею в виду поле TINYINT (1) в таблице с именем «is_deleted», а когда транзакция «обновляется» пользователем, она просто обновляет поле is_deleted до 1 для старой записи и вставляет новый запись.Структура таблицы MySql
Это все работает хорошо, потому что я просто должен выполнить следующую инструкцию SQL, чтобы получить все текущие записи:
SELECT id, foo, bar, something FROM trans WHERE is_deleted = 0;
Однако я обеспокоен тем, что эта таблица будет расти излишне большим в течение долгого времени, и я поэтому думают о фактическом удалении старой записи и «архивировании» ее на другую таблицу (trans_deleted). Это означает, что таблица trans будет содержать только «живые» записи, что делает запросы SELECT немного быстрее.
Это значит, что записи обновления будут занимать немного больше времени, так как будут запущены 3 запроса: 1. INSERT INTO trans_deleted old record; 2. УДАЛИТЬ от trans WHERE id = 5; 3. INSERT INTO trans новые записи
Итак, обновление записей займет немного больше работы, но чтение будет быстрее.
Любые мысли по этому поводу?
Здесь подробно обсуждается этот вопрос ... http://stackoverflow.com/questions/3091293/making-a-row-inactive-in-mysql –