在遇到 mysql 查询加载时间慢的问题后,我现在正在寻找计算行数的最佳方法。我曾经愚蠢地使用过mysql_num_rows()
函数来做到这一点,现在意识到这是最糟糕的方法。
我实际上正在制作一个分页来用 PHP 制作页面。
我找到了几种计算行数的方法。但我正在寻找更快的方法来计算它。
表类型为MyISAM
所以现在的问题是
哪个是最好且计算速度最快的 -
1. `SELECT count(*) FROM 'table_name'`
2. `SELECT TABLE_ROWS
FROM INFORMATION_SCHEMA.TABLES WHERE table_schema = 'database_name'
AND table_name LIKE 'table_name'`
3. `SHOW TABLE STATUS LIKE 'table_name'`
4. `SELECT FOUND_ROWS()`
如果还有其他更好的方法来做到这一点,也请让我知道。
如果可能,请描述答案 - 为什么它是最好的和更快的。这样我就可以理解并可以根据我的要求使用该方法。
Thanks.
引用 MySQL 参考手册COUNT http://dev.mysql.com/doc/refman/5.1/en/group-by-functions.html#function_count
COUNT(*) 经过优化,可以在 SELECT 检索时非常快速地返回
从一张表中,没有检索到其他列,并且没有 WHERE
条款。例如:
mysql> SELECT COUNT(*) FROM student;
此优化仅适用于
仅限 MyISAM 表,因为为此存储了精确的行数
存储引擎,可以非常快速地访问。对于交易
存储引擎如InnoDB,存储精确的行数更多
有问题的,因为可能会发生多个事务,每个事务
这可能会影响计数。
另请阅读这个问题MySQL - 复杂性:SELECT COUNT(*) FROM MyTable; https://stackoverflow.com/questions/5257973/mysql-complexity-of-select-count-from-mytable
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)