Sau*_*nez 9 php mysql phpmyadmin
我最近升级了Joomla!使用大型文章数据从1.5安装到1.7,升级方法是升级数据库(基本上将内容插入另一个表)我注意到Rows列值以波浪号(〜)为前缀:

现在,乍一看我认为这意味着该值是近似的,因为当我刷新页面时,我看到一个不同的值,有时更高,有时更低.好吧,让我们说这个值是近似的,在这种情况下,是什么导致了这个?一些考虑:
ben*_*der 11
行计数是InnoDB用于查询优化的近似值.执行计数(*)效率要低得多,并且大致了解行数足以优化查询计划.phpMyAdmin将执行"show table status"查询以获取有关表的信息:
http://dev.mysql.com/doc/refman/5.0/en/show-table-status.html
对于其他存储引擎,例如InnoDB,此值是近似值,并且可能与实际值相差多达40%到50%.在这种情况下,使用SELECT COUNT(*)来获得准确的计数.
SHOW TABLE STATUS没有给出关于InnoDB表的准确统计信息,除了表保留的物理大小.行计数只是SQL优化中使用的粗略估计.
InnoDB不保留表中的内部行数,因为并发事务可能同时"看到"不同数量的行.要处理SELECT COUNT(*) FROM t语句,InnoDB必须扫描表的索引,如果索引不完全在缓冲池中,则需要一些时间.如果您的表不经常更改,使用MySQL查询缓存是一个很好的解决方案.要快速计数,您必须使用自己创建的计数器表,并让应用程序根据插入和删除更新它.如果大致行数足够,SHOW TABLE STATUS可以使用.请参见第13.2.13.1节" InnoDB性能调整技巧 ".
根据该页面的SHOW TABLE STATUS,显示InnoDBrowcounts可能与实际数达50%不等.