繁体   English   中英

为什么“COUNT(*) WHERE LIKE”比“COUNT(*)”快

[英]Why "COUNT(*) WHERE LIKE" faster than "COUNT(*)"

我使用 MySQL 和 InnoDB。 我想知道表中所有记录的数量。 大约是一百万。 idx_user_name 上有一个唯一索引。

SELECT COUNT(*) FROM tb_user
SELECT COUNT(idx_user_name) FROM tb_user

他们需要2.5秒。 解释结果

SELECT COUNT(*) FROM tb_user WHERE idx_user_name LIKE "%%"
SELECT COUNT(idx_user_name) FROM tb_user WHERE idx_user_name LIKE "%%"

它需要0.3s。 解释结果 为什么它们不同?

现在以相反的顺序运行它们。

10 倍的速度差异通常来自“缓存”。 2.5s 从磁盘获取所有数据; 然后是 0.3 秒,因为不需要 I/O。

暂无
暂无

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

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