为了账号安全,请及时绑定邮箱和手机立即绑定

获取表行数的最有效方法

/ 猿问

获取表行数的最有效方法

莫回无 2019-09-21 15:18:40

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



查看完整描述

3 回答

?
慕仙森

如果仅是要获取记录(行)数,则建议使用:


SELECT TABLE_ROWS

FROM 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)。


查看完整回答
反对 回复 2019-09-21
?
慕村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.TABLES

WHERE  TABLE_SCHEMA = 'DatabaseName'

AND    TABLE_NAME   = 'TableName';


查看完整回答
反对 回复 2019-09-21
?
芜湖不芜

如果您通过编写选择查询直接获得最大数量,则您的查询可能会给出错误的值。例如,如果您的表有5条记录,那么您的增量ID将为6,如果我删除5号记录,则您的表中有4条记录,最大ID为4,在这种情况下,您将获得5作为下一个增量ID。提示您可以从mysql Defination本身获取信息。通过在php中编写以下代码


<?

$tablename      = "tablename";

$next_increment     = 0;

$qShowStatus        = "SHOW TABLE STATUS LIKE '$tablename'";

$qShowStatusResult  = 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]";

?>


查看完整回答
反对 回复 2019-09-21

添加回答

回复

举报

0/150
提交
取消
意见反馈 邀请有奖 帮助中心 APP下载
官方微信