Wig*_*ige 9 mysql innodb count
我有一张使用innodb的桌子.我知道这个表大约有8900万行.运用
SELECT COUNT(*) FROM table;
Run Code Online (Sandbox Code Playgroud)
大约需要五分钟才能运行.我知道innodb没有针对无条件COUNT(*)查询进行优化.如何重新构建查询以更快地计算?只是添加WHERE 1 = 1工作,还是我需要查询特定字段?
我知道我可以使用SHOW TABLE STATUS获得大致的行数,但是我希望在PHP脚本中获取值,并且似乎有很多需要深入研究使用该方法.
Gal*_*alz 20
如果你对估计的数字没问题,只是不想乱用SHOW TABLE STATUSPHP,你可以使用information_schema数据库:
SELECT TABLE_ROWS FROM information_schema.tables
WHERE TABLE_SCHEMA = 'my_db_name'
AND TABLE_NAME = 'my_table_name';
Run Code Online (Sandbox Code Playgroud)
如果您对大致的记录数没有问题,可以使用" explain"的输出.
简化的代码版本是
$result = mysql_query('explain SELECT count(*) from TABLE_NAME');
$row = mysql_fetch_assoc($result);
echo $row['rows'];
Run Code Online (Sandbox Code Playgroud)