mysql添加索引最左优先_组合索引的最左优先原则

本文详细介绍了MySQL组合索引的最左优先原则,解释了如何利用这一原则进行有效查询。创建(col1,col2,col3)联合索引意味着实际创建了(col1)、(col1,col2)和(col1,col2,col3)三个索引。查询时,必须从最左边的字段开始匹配,例如WHERE col1=1和WHERE col1=1 AND col2=2将使用相应索引。此外,联合索引有助于减少开销和提高查询效率,尤其是在覆盖索引的情况下。" 134746894,7337247,人工智能神经网络与大脑神经系统:原理、Python实践与未来,"['人工智能', '神经网络', 'Python', '大数据', '机器学习']
摘要由CSDN通过智能技术生成

这道题目考察的知识点是MySQL组合索引(复合索引)的最左优先原则。

最左前缀匹配原则

在mysql建立联合索引时会遵循最左前缀匹配的原则,即最左优先,在检索数据时从联合索引的最左边开始匹配,组合索引的第一个字段必须出现在查询组句中,这个索引才会被用到,示例:

对列col1、列col2和列col3建一个联合索引:

KEY test_col1_col2_col3on test(col1,col2,col3);

联合索引test_col1_col2_col3实际建立了(col1)、(col1,col2)、(col,col2,col3)三个索引。

上面这个查询语句执行时会依照最左前缀匹配原则,检索时会使用索引(col1,col2)进行数据匹配。

注意

索引的字段可以是任意顺序的,如:

所以题目会创建三个索引(plat_order_id)、(plat_order_id与plat_game_id的组合索引)、(plat_order_id、plat_game_id与plat_id的组合索引)。根据最左匹配原则,where语句必须要有plat_order_id才能调用索引(如果没有plat_order_id字段那么一个索引也调用不到),如果同时出现plat_order_id与plat_game_id则会调用两者的组合索引,如果同时出现三者则调用三者的组合索引。

思考

对于联合索引(col1,col2,col3),查询语句SELECT * FROM test WHERE col2=2;是否能够触发索引?

为什么要使用联合索引

减少开销。建一个联合索引(col1,col2,col3),实际相当于建了(col1),(col1,col2),(col1,col2,

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值