在设计表的时候,经常会使用join 做关联
现在出现这样情况:
A 表 join B 表 ,要用 B表 字段做排序,
那么如何命中索引,提高sql 效率
在设计表的时候,经常会使用join 做关联
现在出现这样情况:
A 表 join B 表 ,要用 B表 字段做排序,
那么如何命中索引,提高sql 效率
5 回答3.2k 阅读✓ 已解决
3 回答3.6k 阅读✓ 已解决
1 回答4k 阅读✓ 已解决
3 回答1.8k 阅读✓ 已解决
2 回答2.2k 阅读✓ 已解决
2 回答2.8k 阅读✓ 已解决
1 回答2.4k 阅读✓ 已解决
一般来说,mysql的两个表的连接是先找出A表的一条记录,然后根据连接条件找出B表中的所有记录,然后再回到A表找到下一条记录....
但是你的情况是根据B的某个字段排序,如果按照我上面说的即使在B的排序字段上加了索引那么也不会用到的。Mysql自身有查询优化器的,如果单纯的是你说的业务逻辑,有可能查询优化器会改变你的连接顺序(变成B连接A),这样就变成在B中找到一条记录,然后再去A表找记录。如果这个时候再在B表上建索引就会用到。
具体的情况你要用explain看一下mysql的查询计划才好做优化。
在这里再啰嗦一句,你也可以在你的连接字段和排序字段上建立一个“联合索引”。这样相对分开建索引效率会高一些。但是要遵循向左原则