gpt4 book ai didi

mysql - 对于相同的 "where"子句,select count(*) 比 select * 花费的时间长得多?

转载 作者:IT王子 更新时间:2023-10-29 00:36:31 26 4
gpt4 key购买 nike

我发现对于具有相同 where 子句的查询,select count(*)select * 花费的时间要长得多。

有问题的表有大约 220 万条记录(称之为 detailtable)。它有一个外键字段链接到另一个表(ma​​intable)。

此查询大约需要 10-15 秒:

select count(*) from detailtable where maintableid = 999

但这需要一秒钟或更少的时间:

select * from detailtable where maintableid = 999

UPDATE - 要求指定涉及的记录数。是 150。

更新 2 以下是使用 EXPLAIN 关键字时的信息。

对于 SELECT COUNT(*)EXTRA 列报告:

Using where; Using index

KEYPOSSIBLE KEYS 都将外键约束作为它们的值。

对于 SELECT * 查询,除了 EXTRA 只是说:

Using Where

UPDATE 3 尝试了OPTIMIZE TABLE,但仍然没有什么不同。

最佳答案

肯定的

select count(*)

应该比

select *

count(*)、count(field)、count(primary key)、count(any)都是一样的。

您的 explain 清楚地表明优化器以某种方式使用 count(*) 的索引,而不是其他使外键成为延迟的主要原因。

消除外键。

关于mysql - 对于相同的 "where"子句,select count(*) 比 select * 花费的时间长得多?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21517886/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com