数据库查询问题,求解Using join buffer又是什么,让我的查询变的如此之快

lyd_dream 2021-03-31 06:17:12


疑问1:EXPLAIN的row显示150W多条数据,为什么查询速度还那么快(第二张图是执行的时间,不存在缓存)
疑问2:在图一的情况下,加了个order by主表id,row显示是30W多条,执行超慢(没上图,因为执行了N分钟都没好)
所以我猜想,是不是Using join buffer导致我的查询变快,order by产生了临时表的原因吗,导致速度很慢,还有如果我要order by该怎么优化 ,目前索引nct_alarm_message的 type,create ,nct_alarm_message_user 的amu_amid, amu_userid。
...全文
761 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
chengangcsdn 2021-04-13
  • 打赏
  • 举报
回复
引用 3 楼 lyd_dream 的回复:
[quote=引用 1 楼 chengangcsdn 的回复:]回疑问1 因为你的驱动表很小,且还走了索引覆盖。 疑问2 你加了order by 后 驱动表都变了,变成了m 大表了。 你可以改为 straight_join 指定c表为驱动表试试。
这里怎么看我哪个表是驱动表,我一直以为我from哪个表就是驱动表。[/quote] explain 第一个表就是驱动表。 straight_join 就是 from后面的就是驱动表
lyd_dream 2021-04-13
  • 打赏
  • 举报
回复
引用 1 楼 chengangcsdn 的回复:
回疑问1 因为你的驱动表很小,且还走了索引覆盖。 疑问2 你加了order by 后 驱动表都变了,变成了m 大表了。 你可以改为 straight_join 指定c表为驱动表试试。
这里怎么看我哪个表是驱动表,我一直以为我from哪个表就是驱动表。
chengangcsdn 2021-04-02
  • 打赏
  • 举报
回复
回疑问1 因为你的驱动表很小,且还走了索引覆盖。 疑问2 你加了order by 后 驱动表都变了,变成了m 大表了。 你可以改为 straight_join 指定c表为驱动表试试。

56,678

社区成员

发帖
与我相关
我的任务
社区描述
MySQL相关内容讨论专区
社区管理员
  • MySQL
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧