mysql 关联查询中 where 子句查询字段明明有索引为什么 explain 的时候没有?

2023-11-21 19:21:19 +08:00
 UnrealEngine

SELECT cms.id uid, cms.username, cms.nickname, cms.type, count(*) num_member FROM yz_customer_service cms INNER JOIN yz_customer_service_member cm ON cms.id=cm.customer_service_id WHERE cms.create_time BETWEEN '1695000000' AND '1700496000' GROUP BY cms.id;

create_time 有没有索引 type 一直都是 index

如果把 GROUP BY 去掉的话 type 直接 ALL 了……

1180 次点击
所在节点    MySQL
6 条回复
UnrealEngine
2023-11-21 19:21:47 +08:00
txzhanghuan
2023-11-21 19:42:18 +08:00
时间去掉引号试试
UnrealEngine
2023-11-21 19:48:17 +08:00
@txzhanghuan #2 不行……
wooyulin
2023-11-21 20:08:24 +08:00
索引是怎么建的,时间的区分度打不打,数据量怎么样。
1 、groupBy id 可能走 主键索引更有优势
1 、涉及回表,mysql 不一定会走 create_time 索引
wooyulin
2023-11-21 20:11:01 +08:00
把 cms.username, cms.nickname, cms.type 去掉对比一下
dyv9
305 天前
表里有多少数据呀?数据量少时索引有没有差别不大,用索引返回的值接近表的量级时索引反而浪费时间,因为拿着所有钥匙逐个开门查房比每次跑前台拿一把钥匙查房再回去前台拿下一个房间钥匙快得多。

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/993939

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX