MySQL第一次查询很慢?

发布于 2022-09-07 23:21:15 字数 481 浏览 14 评论 0

问题描述

有个user表,里头有

uid
regdate //注册日期
reg_package //注册包
reg_channel //注册渠道
...

现在我有一条SQL查询用户数据

SELECT * FROM `user` ORDER BY `regdate` DESC  LIMIT 0,50;

这个表上有个多列的索引,idx_regdate_reg_package_reg_channel(key_len有202)
这条SQL也用了这个索引了(用了EXPLAIN看了)

问题

这条语句第一次执行的时候,查询速度特别慢,之后的就会快很多,这里让我很不解
PS:我知道InnoDB索引是要用到缓冲,难不成跟缓冲有关系?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(3

套路撩心 2022-09-14 23:21:15

慢的原因不在于这条语句,弄错了,我排查了下,是select COUNT (*) FROM user这条语句慢的缘故

荒人说梦 2022-09-14 23:21:15

数据库有很多缓存, sql 语句解析缓存, 查询结果缓存,索引缓存,你说的第一次慢,之后快, 很可能是查询结果缓存. 你可以试试第二次查询时改变一下参数:

如第一次

SELECT * FROM `user` ORDER BY `regdate` DESC LIMIT 0,50;

第二次

SELECT * FROM `user` ORDER BY `regdate` DESC LIMIT 5,55;

看看是不是也慢 ?

久光 2022-09-14 23:21:15

如果数据量很大,请不要用select *,建议用 select field

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文