我用show table status显示数据库中所有表的信息,其中的rows是表的行数,按道理这里的rows更select count(*) 查出来的记录数应该一样才对,可为什么结果却差不很大了,有的表rows更大,有的更小。而且我在图形工具中查出的rows与在dos中查出来的也不相同。

解决方案 »

  1.   

    这本身就是个粗略的统计数据,以供MYSQL在优化查询方案的时候使用。并不保证准确。
      

  2.   

    行的数目。部分存储引擎,如MyISAM,存储精确的数目。
    对于其它存储引擎,比如InnoDB,本值是一个大约的数,与实际值相差可达40到50%。在这些情况下,使用SELECT COUNT(*)来获得准确的数目。
    对于在INFORMATION_SCHEMA数据库中的表,Rows值为NULL
      

  3.   

    用SELECT COUNT(*)来获得准确的数目
      

  4.   

    SHOW TABLE STATUS不能给出关于InnoDB表准确的统计数据,除了被表保留的物理尺寸。行计数仅是在SQL优化中粗略的估计。各个存储引擎不尽相同