问九:什么是最左匹配原则?

导入:

顾名思义:最左优先,以最左边的为起点任何连续的索引都能匹配上。同时遇到范围查询(>、<、between、like)就会停止匹配

例如:b = 2 如果建立(a,b)顺序的索引,是匹配不到(a,b)索引的;但是如果查询条件是a = 1 and b = 2或者a=1(又或者是b = 2 and a = 1)就可以,因为优化器会自动调整a,b的顺序(in 和 =)。再比如a = 1 and b = 2 and c > 3 and d = 4 如果建立(a,b,c,d)顺序的索引,d是用不到索引的,因为c字段是一个范围查询,它之后的字段会停止匹配。


详解:

因为索引的底层是一棵B+树,联合索引的键值数量不是一个,而是多个

但是构建一棵二叉树只能根据一个值来构建,因此数据库依据联合索引最左的字段来建立B+树。


举个栗子:

假如创建一个(a,b)的联合索引,那么它的索引树是这样的

可以看到a的值是有顺序的,1,1,2,2,3,3,而b的值是没有顺序的1,2,1,4,1,2。所以b = 2这种查询条件没有办法利用索引,因为联合索引首先是按a排序的,b是无序的

同时我们还可以发现在a值相等的情况下,b值又是按顺序排列的,但是这种顺序是相对的。所以最左匹配原则遇上范围查询就会停止,剩下的字段都无法使用索引。例如a = 1 and b = 2 a,b字段都可以使用索引,因为在a值确定的情况下b是相对有序的,而a>1 and b=2,a字段可以匹配上索引,但b值不可以,因为a的值是一个范围,在这个范围中b是无序的。

再详细一点:联合索引(a,b,c),可以认为这三列都是排好序的,在a下b是有序的,在b下c是有序的,也就是说a=1返回的结果中b有序,此时可以利用索引查找b,b=1的结果中c有序,可以c索引来查找,但是一旦这顺序打破那么就只能是从左边起索引依此生效,也就是说如果要查a=1,c=2的记录那么就只有a生效,因为b没有生效,所以c不会生效。

mysql创建复合索引的规则是首先对复合索引最左边的字段的数据进行排序,在此基础上,再对后面的字段进行排序,这样第一个字段是绝对有序的,后面的字段就是无序的了,一般情况下第二个字段进行条件判断是用不到索引的,可能出现type是index类型的,这就是mysql最左前缀的原因。

  • 4
    点赞
  • 15
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
### 回答1: 最左前缀原则是指在数据库索引中,如果索引包含多个列,那么查询时应该使用最左边的列作为查询条件,以便优化查询效率。 最左匹配原则是指在数据库索引中,如果索引包含多个列,那么查询时应该使用最左边的列作为查询条件,并且查询条件中的值必须是索引中最左边的值,以便优化查询效率。如果查询条件中的值不是最左边的值,那么索引将无法使用,查询效率将大大降低。 ### 回答2: 最左前缀原则指的是在使用索引进行匹配时,数据库系统会尽可能利用最左侧的索引列进行匹配,以此提高匹配的效率和准确性。这是因为索引的最左侧列上的值是唯一且单一的,而在其他列上可能存在相同的值,因此在最左侧列上的值匹配不成功时,其它列上的值匹配就没有必要进行了。 而最左匹配原则则是指在使用索引进行匹配时,只要匹配到索引中的最左侧列就可以停止匹配,后续列的值将不再被参与匹配。这是因为索引列的顺序具有明显的逻辑性,数据库系统可以通过仅在最左侧列进行匹配,预先筛选掉一部分结果,从而加快匹配的速度。 最左前缀原则和最左匹配原则是SQL语句优化中常用的技巧,可以有效减少系统的I/O操作,提高查询速度和效率。具体来说,当我们设计数据库表时,应该将经常需要检索的列放在最左侧的索引列上,并尽量减少单个索引列上的值范围,这样可以更好地利用这两个原则,加速数据库查询。 ### 回答3: 最左前缀原则和最左匹配原则是计算机领域中常用的两种匹配规则。 最左前缀原则指的是,在一个字符串集合中,当多个字符串拥有相同的前缀时,选择最长的前缀作为匹配的依据。例如,在 {a, ab, abc} 这样的字符串集合中,如果需要匹配一个字符串 "abcd",则最左前缀原则会选择 "abc" 作为匹配的字符串。 最左匹配原则则是指,在一个字符串集合中,当多个字符串都能够匹配到一个给定的字符串时,选择最左边的那个字符串作为匹配的依据。例如,在 {abc, cd, ab} 这样的字符串集合中,如果需要匹配字符串 "abcd",则最左匹配原则会选择 "abc" 作为匹配的字符串。 这两种匹配原则在实际应用中都有着广泛的应用。例如,在编译器中,最左前缀原则会用来匹配代码中的关键字和标识符;在路由器和防火墙中,最左匹配原则则会用来匹配网络数据包中的源IP和目的IP地址。这些应用都需要高效地匹配给定的字符串,以便程序可以根据匹配结果做出相应的处理或者决策。 总的来说,最左前缀原则和最左匹配原则都是非常重要的匹配规则,它们在不同的计算机领域中都有着广泛的应用。在理解和使用它们时,需要仔细理解它们的特点和原理,并结合具体的应用场景来做出相应的决策和调整。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值