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

wr98u20j  于 2021-06-21  发布在  Mysql
关注(0)|答案(3)|浏览(261)

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

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

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

lqfhib0f

lqfhib0f1#

SELECT * ... ,然后在php中计数,需要将所有行的所有列铲回php。这是一个很大的努力,但收效甚微。 SELECT COUNT(col) ... 通过mysql进行计数,但必须检查 colNULL . 它需要得到 col 每行。 SELECT COUNT(*) ... 以最有效的方式计算行数。这涉及到寻找“最小的”索引(或者整个表,如果没有二级索引的话),并对其进行计数。
你必须了解 INDEXes 在数据库里找到任何地方!这只是它们的一个小用途。

blpfk2vs

blpfk2vs2#

使用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

vhipe2zx

vhipe2zx3#

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

相关问题