我有一个数据库跟踪用户状态的单个表。当我完成处理该行时,不再需要将其保存在数据库中并可以删除。查询性能是否从删除SQL数据库中的行增加?
现在让我们说我想跟踪行而不是删除它(用于历史目的,分析等)。它会更好于:
在同一个表保留数据和标记行作为“拿来主义”(有一个额外的列或类似的东西)
从表中删除的行将其插入到只创造了历史目的
对于选择#1一个单独的表,我不知道是否留在数据库中的不必要的行会开始影响查询性能。 (我所有的查询都在索引列上,所以也许这并不重要?)
对于选择#2,我想知道是否不断删除行最终会导致诸如碎片之类的问题?
嗯,这是MySQL的。不应该标记两者。 – jnortey
对于选择#2而不是在将行转移到另一个表之后删除行 - 您是否可以不重用它们。将行标记为不再使用,并在您需要跟踪当前状态并首先找到使用时搜索那些行 - 如果没有添加额外的记录。这样你就可以避免碎片。不要说这是一个很好的解决方案 - 只是一种避免碎片的方法,如果你沿着这条路线走下去的话。 – PaulF
感谢PaulF的建议,但是我想尽可能避免重复数据。 – jnortey