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

How can I count entries in mySQL database faster?

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

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

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

  1. 将 * 替换为一个字段(使用自动递增 id)- 这将减少一点时间。
  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

SELECT * ...,然后在 PHP 中计数,需要将所有行的所有列铲回 PHP。这是付出很多却收获很少。

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

SELECT COUNT(*) ... 以最有效的方式计算行数。这涉及查找 'smallest' 索引(或整个 table,如果没有二级索引),并对其进行计数。

必须了解INDEXes才能在数据库中取得任何进展!这只是他们的一个次要用途。