如何更快地计算mySQL数据库中的条目?

时间:2018-05-14 10:30:11

标签: php mysql pdo database-performance rowcount

我在计算SQL数据库中的条目:

$sql = "SELECT * FROM files WHERE id = ?";
$q = $pdo->prepare($sql);
$q->execute([$id]);
$rowCount =$q->rowCount();

$rowCount的结果是500000。 但要输出这个单个数字需要5秒!是否有可能更快地得到这个结果?

3 个答案:

答案 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)

  1. 用字段替换*(使用自动递增ID) - 这会减少一点时间。
  2. 索引该字段。 - 如果使用索引字段,查询性能将会提高。

答案 2 :(得分:0)

SELECT * ...,然后用PHP计算,需要将所有行的所有列都拖回PHP。这是一项非常小的收获。

SELECT COUNT(col) ...由MySQL进行计数,但必须检查col是否为NULL。它需要为每一行获得col的值。

SELECT COUNT(*) ...以最有效的方式计算行数。这包括查找“最小”索引(或整个表,如果没有二级索引),并通过它进行计数。

必须了解INDEXes以获取数据库中的任何位置!这只是他们使用的一个次要