MySQL 中哪一个更快? COUNT(id) 还是计算结果行? [关闭]

Posted

技术标签:

【中文标题】MySQL 中哪一个更快? COUNT(id) 还是计算结果行? [关闭]【英文标题】:Which one is faster in MySQL? COUNT(id) or counting the result rows? [closed] 【发布时间】:2021-08-09 08:59:47 【问题描述】:

我需要计算 mysql 中一个巨大表中的总行数。我正在用两种形式的 php 和 PDO 编写代码。请告诉我哪一个可以更快?使用 COUNT() 函数,还是计算返回的总行数?

方法一:

$sql = "SELECT id FROM tbl_users";
$q = $db->prepare($sql);
$q->execute(array());
$rows = $q->rowCount();

方法二:

$sql = "SELECT COUNT(id) as c FROM tbl_users";
$q = $db->prepare($sql);
$q->execute(array());
$result = $q->fetch();
$rows = $result['c'];  

提前谢谢你。

【问题讨论】:

取决于COUNT(id) 值。如果它很大,那么您将失去发送到客户端阶段的输出行集。任何情况都必须经过测试。 @Akina 易于测试。我毫不怀疑在一张大桌子上的结果。在一张小桌子上,差异可能难以察觉。 【参考方案1】:

获取所有行需要将整个表数据传输到客户端。这比让 mysql 计算行要贵得多。

【讨论】:

此外,使用COUNT(*),而不是COUNT(id)

以上是关于MySQL 中哪一个更快? COUNT(id) 还是计算结果行? [关闭]的主要内容,如果未能解决你的问题,请参考以下文章

编码内部联接的两种方法中哪一种更快?

哪个选择查询将运行得更快[重复]

EXISTS 与 IN - MySQL 5.5 和 MySQL 5.7 中哪一个更好?

怎么优化mysql查询语句

MySQL左外连接很慢

MySQL 中的 COUNT(id) 与 COUNT(*)