MySQL快速查询超大表的行数¶
在使用InnoDB
查询引擎时,通过select count(*) from table_xxx
语句来查询MySQL表的行数效率不算很高,尤其是遇到超大表,速度尤其慢。
为什么查行数会慢¶
在使用MyISAM
查询引擎时,MySQL会准确记录表的行数,在每次增减行数时,都及时更新该数据。但使用InnoDB
查询引擎时,没有实时记录表的行数,遇到select count(*) from table_xxx
这种查询,InnoDB
实际会真地访问磁盘去统计表的行数,速度自然慢了。
快速查询行数¶
实际上,即使使用InnoDB
,在MySQL的系统表里,也有记录各个表的行数,只是,这个数据不是实时更新的:
select TABLE_ROWS FROM INFORMATION_SCHEMA.TABLES where TABLE_NAME='table_xxx';
在对行数的实时性要求不高时,上述SQL便可以代替select count(*) from table_xxx
。
本文为kyleblog.cn原创,转载请注明出处:https://www.kyleblog.cn/posts/mysql_fast_count
发布日期:2022-08-21 联系作者