我在计算SQL数据库中的条目:
$sql = "SELECT * FROM files WHERE id = ?";
$q = $pdo->prepare($sql);
$q->execute([$id]);
$rowCount =$q->rowCount();
$rowCount
的结果是500000。
但要输出这个单个数字需要5秒!是否有可能更快地得到这个结果?
答案 0 :(得分:2)
使用COUNT()函数https://dev.mysql.com/doc/refman/8.0/en/counting-rows.html:
$sql = "SELECT COUNT(*) FROM files WHERE id = ?";
还要确保'id'是索引列: https://dev.mysql.com/doc/refman/8.0/en/mysql-indexes.html
答案 1 :(得分:0)
答案 2 :(得分:0)
SELECT * ...
,然后用PHP计算,需要将所有行的所有列都拖回PHP。这是一项非常小的收获。
SELECT COUNT(col) ...
由MySQL进行计数,但必须检查col
是否为NULL
。它需要为每一行获得col
的值。
SELECT COUNT(*) ...
以最有效的方式计算行数。这包括查找“最小”索引(或整个表,如果没有二级索引),并通过它进行计数。
您必须了解INDEXes
以获取数据库中的任何位置!这只是他们使用的一个次要。