繁体   English   中英

如何更快地计算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秒钟! 是否有可能更快地获得此结果?

使用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. 将*替换为一个字段(使用自动递增ID)-这将减少时间。
  2. 对该字段编制索引。 -如果您使用索引字段,则查询性能将提高。

SELECT * ... ,然后用PHP进行计数,需要将所有行的所有列都铲回PHP。 付出很大的努力却几乎没有收获。

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

SELECT COUNT(*) ...以最有效的方式对行进行计数。 这涉及寻找“最小”索引(如果没有二级索引,则查找整个表),并对其进行计数。

必须了解INDEXes ,才能进入数据库! 这只是它们的一个用途。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM