【发布时间】:2009-06-01 04:30:23
【问题描述】:
我目前拥有一个包含超过 600 万行并且还在不断增长的数据库。我目前在做 SELECT COUNT(id) FROM table;为了向我的用户显示数字,但是数据库变得越来越大,除了能够显示数字之外,我不需要存储所有这些行。有没有办法选择要显示的 auto_increment 值,以便我可以清除数据库中的大部分行?使用LAST_INSERT_ID() 似乎不起作用。
【问题讨论】:
-
詹姆斯,您尝试过其他解决方案吗?他们似乎更好......
-
如果您从未删除过记录,那么 auto_increment 将是正确的,否则它会被自表诞生以来删除的记录数所抵消。
-
只是为了清楚区别,获取行数告诉您现在有多少行。如果您希望计数包括曾经存在但随后被删除的行,则需要 auto_increment (尽管这也将包括仅存在于回滚而不是提交的事务中的行)。
-
或者,如果有人硬编码了一个高于某些插入的当前 auto_increment 的值,您也会跳过一些。我想说 auto_increment 并不是一种真正值得信赖的计数方式。