mysql 建了联合索引,还需要建单独索引吗?

mysql 建了联合索引,还需要建单独索引吗?

阅读 16.3k
3 个回答

看你业务需要的啊,如果联合索引满足了你所有的查询场景,那肯定不用了。单如果你还有其他的查询场景,而且联合索引满足不了的,你还是要单独建立索引的,一句话,索引是为了你的查询优化,所以看你业务场景。

假如联合索引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不会生效,需要匹配单独的索引

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题