单列索引建立的顺序 会不会影响查询速度?

假如一个表的单列索引建立顺序是 uid,username,age,sex
另一张表的单列索引建立顺序是 username,sex,uid,age
两个表的数据内容相同
那么相同的查询语句 速度会不会根据索引的建立顺序有差别?

阅读 2.3k
3 个回答

首先你这个举例就有问题。uid,username这种是唯一性了,你凭空多加其他字段只会影响索引树空间的开销而已。
索引字段建立顺序是会有影响的。看字段的区分度,比如A索引的第一个字段筛选结束后有一百条数据,B索引筛完就10条。那么接下去查找的效率分别为lg(100),lg(10)。理论上还是有点差别。

我个人理解单列索引不会影响

需要看你的查询条件来判断。背后的逻辑是索引最左匹配原则。
索引的底层是一颗B+树,构建一颗B+树只能根据一个值来构建。此处的索引当然也包括联合索引,当索引类型为联合索引时,数据库会依据联合索引最左的字段来构建B+树,也叫最左匹配原则。

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