我有一张大(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引擎的表。
答案 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