mysql 建了联合索引,还需要建单独索引吗?
假如联合索引idx(a,b),
那么a列上的索引就没必要了,
但是如果结合业务查询,确实需要b列上的索引,那就建。
另外,如果需要联合idx(a,b),同时a和b列上都需要有索引,那就看a和b哪一列单独建索引更高效,来决定idx(a,b)里a,b的顺序。
例如a是int类型,b是varchar(100),那么就建idx(b,a),idx_a(a)。这里idx_a(a),就比idx_b(b)好。
如果单独索引是复合索引的第一个,就不需要了,其他位置的就需要单独建
比如idx(a,b)
此时a就不需要单独建索引了,因为在匹配的时候始终会先去匹配a列的索引。而当a失效时,b不会生效,需要匹配单独的索引
5 回答1.7k 阅读
8 回答995 阅读
2 回答2.3k 阅读
3 回答917 阅读✓ 已解决
2 回答1.5k 阅读
1 回答764 阅读✓ 已解决
2 回答930 阅读
看你业务需要的啊,如果联合索引满足了你所有的查询场景,那肯定不用了。单如果你还有其他的查询场景,而且联合索引满足不了的,你还是要单独建立索引的,一句话,索引是为了你的查询优化,所以看你业务场景。