sql 优化求指导

2020-09-29 10:02:14 +08:00
 seagull7558

SELECT X,X,X,X FROM A LEFT JOIN B ON a.id = b.a_id GROUP BY b.spell_name ORDER BY b.code

类似于这种查 A 表 但使用 B 表字段做排序和分组的 SQL 该如何添加索引呢?

2306 次点击
所在节点    MySQL
6 条回复
bigNewsMaker
2020-09-29 10:59:17 +08:00
改成 right join,然后在 b 表上加索引?
fuyufjh
2020-09-29 13:16:11 +08:00
* 改成 inner join ( inner join 可以左右对调,left join 不可以),然后在 b.spell_name 上加索引
* 另外,这是一个典型的分析型查询,建议导到其他分析型数据库里做
maigebaoer
2020-09-29 13:17:58 +08:00
你先把 b 表 group,order 后的取出来,再和 a 表 join,看看如何?
hooopo
2020-09-29 13:19:15 +08:00
一定是先排序后 join 咯
l00t
2020-09-29 14:48:32 +08:00
加在关联条件上,也就是 ID 。group by 的字段不用考虑,这部分不需要索引。

楼上的一些回答简直不懂 SQL,left join 和 right join / inner join 压根不等价,出来的结果集都不一样,能随便换?
U87
2022-11-04 16:15:47 +08:00
@l00t 请教下,goupby 后字段不也是可以走索引的吗?

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

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

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

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

© 2021 V2EX