首页 > 其他分享 >面试题-什么是最左前缀法则?什么时候索引将失效?

面试题-什么是最左前缀法则?什么时候索引将失效?

时间:2023-01-20 11:44:39浏览次数:41  
标签:面试题 法则 前缀 查询 索引 如果 失效

什么是最左前缀法则?什么时候索引将失效?

如果索引了多列(联合索引),要遵守最左前缀法则。最左前缀法则指的是查询从索引的最左列开始, 并且不跳过索引中的列。如果跳跃某一列,索引将会部分失效(后面的字段索引失效)。

索引失效情况:

  • 联合索引失效:即不符合最左前缀法则。注:与我们编写SQL时,条件编写的先后顺序无关

  • 范围查询:联合索引中,出现范围查询(>,<),范围查询右侧的列索引失效。(当范围查询使用>= 或 <= 时,就能走联合索引,所以,在业务允许的情况下,尽可能的使用类似于 >= 或 <= 这类的范围查询,而避免使用 > 或 <)

  • 索引列运算:不要在索引列上进行运算操作,否则索引将失效。

    # 比如:当根据phone字段进行函数运算操作之后,索引失效
    explain select * from tb_user where substring(phone,10,2) = '15';
  • 字符串不加引号:字符串类型字段使用时,不加引号,索引将失效。(如果字符串不加单引号,对于查询结果,没什么影响,但是数 据库存在隐式类型转换,索引将失效。)

  • like模糊查询:如果仅仅是尾部模糊匹配,索引不会失效。如果是头部模糊匹配,索引失效。

  • or连接条件:用or分割开的条件, 如果or前的条件中的列有索引,而后面的列中没有索引,那么涉及的索引都不会被用到。(当or连接的条件,左右两侧字段都有索引时,索引才会生效。)

  • 数据分布影响:如果MySQL评估使用索引比全表更慢,则不使用索引。 因为索引是用来索引少量数据的,如果通过索引查询返回大批量的数据,则还不 如走全表扫描来的快,此时索引就会失效。

标签:面试题,法则,前缀,查询,索引,如果,失效
From: https://www.cnblogs.com/galo/p/17062617.html

相关文章

  • MySQL索引使用宝典已送达,快来查缺补漏 转载
    这一篇文章来聊一聊如何用好MySQL索引。  为了更好地进行解释,我创建了一个存储引擎为InnoDB的表user_innodb,并批量初始化了500W+条数据。包含主键id、姓名字段(name)、......
  • 2022最新MySQL高频面试题汇总
    sidebar:heading事务的四大特性?事务特性ACID:原子性(Atomicity)、一致性(Consistency)、隔离性(Isolation)、持久性(Durability)。原子性是指事务包含的所有操作要么全部成......
  • 2022年面试题之JS
    1. js数组的哪些方法会改变原数组pop()删除arrayObject的最后一个元素,把数组长度减1,并且返回它删除的元素的值push()方法可把它的参数顺序添加到arrayObject的尾......
  • redis面试题
    1.项目中是否使用过redis?为什么要使用redis?使用过之前使用的都是修改某个value值,如登录账号被锁定30分钟,查看还剩余的时间,或者想将账号由锁定状态更新为未锁定状态,删......
  • 华为面试题之购物单解答
    原题如下:题目描述王强今天很开心,公司发给N元的年终奖。王强决定把年终奖用于购物,他把想买的物品分为两类:主件与附件,附件是从属于某个主件的,下表就是一些主件与附件的例子: ......
  • ElasticSearch全文搜索引擎 -Spring Boot操作ES(SpringData概述、Spring Data Elastics
    文章目录​​1.SpringData概述​​​​2.SpringDataElasticsearch​​​​3.实现基本操作​​​​4.ElasticSearch操作文档​​​​5.ElasticSearch原生API操作工具......
  • Elasticsearch笔记(集群插件、kibana、什么是倒排索引)
    Elasticsearch中的集群、节点、索引、文档、类型集群是一个或多个节点(服务器)的集合,它们共同保存您的整个数据,并提供跨所有节点的联合索引和搜索功能。群集由唯一名称标识,......
  • 浅谈如何设计MySQL索引
    文章目录​​一、索引的代价​​​​二、如何设计索引​​​​1、索引列的类型尽量小​​​​2、索引的选择离散性高的​​​​3、只为用于搜索、排序或分组的列创建索引​......
  • Jmeter - 索引贴
    1.Loadrunner和Jmeter区别2.Jmeter基础3.Jmeter-定时器4.Jmeter-逻辑控制器5.Jmeter-提取器其他:1.Jmeter-处理HTTP请求响应中文乱码及汉化[2.Jmeter-......
  • MySQL实战宝典 索引调优篇 14 分区表:哪些场景不建议用分区表
    MySQL实战宝典索引调优篇14分区表:哪些场景不建议用分区表 前面几节,通过索引的原理,索引覆盖的使用,结合复杂SQL的调优,学习了索引设计的各个方面,接下来聊聊分区表的设......