获取表行数的最有效方法

我目前有一个数据库,该数据库有超过600万行并且还在不断增长。我目前正在SELECT COUNT(id)FROM table; 为了向我的用户显示数字,但是数据库越来越大,除了能够显示数字之外,我不需要存储所有这些行。有没有办法选择要显示的auto_increment值,以便可以清除数据库中的大多数行?使用LAST_INSERT_ID()似乎无效。



莫回无
浏览 461回答 3
3回答

慕仙森

如果仅是要获取记录(行)数,则建议使用:SELECT TABLE_ROWSFROM information_schema.tables WHERE table_name='the_table_you_want' -- Can end here if only 1 DB   AND table_schema = DATABASE();      -- See comment below if > 1 DB(至少对于MySQL)。

慕村9548890

以下是查找AUTO_INCREMENT表的下一个值的最有效方法。即使在包含数百万个表的数据库上,这也很快,因为它不需要查询潜在的大型information_schema数据库。mysql> SHOW TABLE STATUS LIKE 'table_name';// Look for the Auto_increment column但是,如果必须在查询中检索此值,则information_schema必须转到数据库。SELECT `AUTO_INCREMENT`FROM   INFORMATION_SCHEMA.TABLESWHERE  TABLE_SCHEMA = 'DatabaseName'AND    TABLE_NAME   = 'TableName';

芜湖不芜

如果您通过编写选择查询直接获得最大数量,则您的查询可能会给出错误的值。例如,如果您的表有5条记录,那么您的增量ID将为6,如果我删除5号记录,则您的表中有4条记录,最大ID为4,在这种情况下,您将获得5作为下一个增量ID。提示您可以从mysql Defination本身获取信息。通过在php中编写以下代码<?$tablename&nbsp; &nbsp; &nbsp; = "tablename";$next_increment&nbsp; &nbsp; &nbsp;= 0;$qShowStatus&nbsp; &nbsp; &nbsp; &nbsp; = "SHOW TABLE STATUS LIKE '$tablename'";$qShowStatusResult&nbsp; = mysql_query($qShowStatus) or die ( "Query failed: " . mysql_error() . "<br/>" . $qShowStatus );$row = mysql_fetch_assoc($qShowStatusResult);$next_increment = $row['Auto_increment'];echo "next increment number: [$next_increment]";?>
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

MySQL