假如一个表的单列索引建立顺序是 uid,username,age,sex
另一张表的单列索引建立顺序是 username,sex,uid,age
两个表的数据内容相同
那么相同的查询语句 速度会不会根据索引的建立顺序有差别?
假如一个表的单列索引建立顺序是 uid,username,age,sex
另一张表的单列索引建立顺序是 username,sex,uid,age
两个表的数据内容相同
那么相同的查询语句 速度会不会根据索引的建立顺序有差别?
需要看你的查询条件来判断。背后的逻辑是索引最左匹配原则。
索引的底层是一颗B+树,构建一颗B+树只能根据一个值来构建。此处的索引当然也包括联合索引,当索引类型为联合索引时,数据库会依据联合索引最左的字段来构建B+树,也叫最左匹配原则。
6 回答3.5k 阅读✓ 已解决
3 回答1.7k 阅读✓ 已解决
4 回答2k 阅读
2 回答1.2k 阅读✓ 已解决
2 回答1.4k 阅读✓ 已解决
2 回答1.3k 阅读✓ 已解决
2 回答2.5k 阅读
首先你这个举例就有问题。uid,username这种是唯一性了,你凭空多加其他字段只会影响索引树空间的开销而已。
索引字段建立顺序是会有影响的。看字段的区分度,比如A索引的第一个字段筛选结束后有一百条数据,B索引筛完就10条。那么接下去查找的效率分别为lg(100),lg(10)。理论上还是有点差别。