慢SELECT COUNT(*),information_schema,基数字段

时间:2012-10-04 21:33:35

标签: mysql database-performance large-data-volumes large-data

我有一张大(60多万条记录)表。 该表有一个主键(id,auto_increment,index id)

我有一个报告从该表中选择记录。要浏览和浏览此报告(用PHP编写),我正在使用分页脚本。

此脚本使用SELECT COUNT()来获取此表中的记录总数。 SELECT COUNT()非常慢。

问题: 我可以查询统计表中的基数字段,information_schema数据库中table_name = my_large_table_name和column_name = id和(或)index_name是我的auto_incremented id的索引名称,然后将结果用作我的分页脚本中的总行数吗?

更新

或者我可以查询TABLE_ROWS中表TABLES中的information_schema字段,以获取表格中的总行数吗?结果准确吗?

使用InnoDB引擎的表。

1 个答案:

答案 0 :(得分:1)

听起来像一个innodb表,其中行计数没有被缓存,因此必须计算。

表格统计数据也不太准确:

  

对于其他存储引擎,例如InnoDB,此值为   近似值,可能会从实际值变化多达40到   50%。 http://dev.mysql.com/doc/refman/5.1/en/show-table-status.html

你见过SQL_CALC_FOUND_ROWS吗? http://dev.mysql.com/doc/refman/5.0/en/information-functions.html

相关问题