【发布时间】:2010-08-06 12:10:04
【问题描述】:
目前,我在 mysql 中有一个记录事务的表。这些交易可能会被用户更新——有时从不,有时经常。但是,我需要跟踪此表中每个字段的更改。所以,我现在拥有的是表中名为“is_deleted”的 TINYINT(1) 字段,当用户“更新”事务时,它只是将旧记录的 is_deleted 字段更新为 1 并插入一个全新的记录。
这一切都很好,因为我只需要运行以下 sql 语句来获取所有当前记录:
SELECT id, foo, bar, something FROM trans WHERE is_deleted = 0;
但是,我担心这个表会随着时间的推移变得不必要的大,因此我正在考虑实际删除旧记录并将其“归档”到另一个表 (trans_deleted)。这意味着 trans 表将只包含“实时”记录,因此使 SELECT 查询更快一点。
不过,这确实意味着更新记录的时间会稍长一些,因为它将运行 3 个查询: 1. INSERT INTO trans_deleted 旧记录; 2. DELETE from trans WHERE id = 5; 3. INSERT INTO trans 新记录
因此,更新记录需要更多的工作,但读取会更快。
对此有什么想法吗?
【问题讨论】:
-
这里对这一点进行了广泛的讨论...stackoverflow.com/questions/3091293/…
标签: mysql database-design