我以前认为删除自动增量表中的行会损害SELECT性能,因此我一直在使用名为“removed”的tinyint列来标记项目是否被删除。
我的SELECT查询是这样的:
SELECT * FROM items WHERE removed = 0 ORDER BY id DESC LIMIT 25
但是我想知道它是否确实有意义只删除那些行。不到1%的行被标记为“已删除”,因此对于mysql来说,检查每行是否删除= 0似乎是愚蠢的。
那么删除行会不会以任何方式损害性能?
答案 0 :(得分:3)
这在很大程度上取决于您的用例 - 以及您的用户。将行标记为已删除可以在各种情况下为您提供帮助:
此外,在正确编制索引时,在我的测量中,影响总是微不足道(请注意我写了“测量” - 同样去了解,不要盲目相信互联网上的某些人)。所以,我的建议是“使用removed
专栏,它有显着的好处,没有明显的负面影响”。
答案 1 :(得分:0)
我认为在选择查询上删除行损害。通常人们会使用名为“已删除”的额外列[在您的案例中删除]以提供类似功能的恢复。因此,如果您不提供还原功能,那么您可以删除它不会影响选择查询的行,据我所知。 但是在删除记住关系的同时,它们也应该被删除或导致错误或提供错误的结果。
答案 2 :(得分:0)
您只需在表格中填写越来越多您不需要的记录。如果您以后不打算使用它们,我认为您根本不需要存储它们。如果你想保留它们,但不打算经常使用它们,你可以创建一个临时表来保存你的“删除”记录。