在很多数据库中,当创建多列的索引的时候,会出现最左前缀的现象。

假设有如下表: create table AAA (a varchar2(32) ,b varchar2(32),c date);

在a和c列上建普通索引: create index iN_AAA_1 on AAA (a, c);

1.索引左前缀性的第一层意思:必须用到索引的第一个字段。 select * from AAA where b=:xxx and c=sysdate;则不会用到索引,因为必须有a出现在where 语句中才会使用到该索引。

2. 索引前缀性的第二层意思:对于索引的第一个字段,用like时左边必须是固定值,通配符只能出现在右边。 select * from AAA where a like ‘1%’;会用到索引;而select * from AAA where a like ‘%1’;不会用到索引。

3.索引前缀性的第三层意思:如果在字段前加了函数,则索引会被抑制, 例如:select * from aaa where trim(a)=1,则不会用到索引。

在字段前嵌入了表达式,索引也将被抑制。 假设a是date格式的,那么where a+7<sysdate将不会用到索引,而where a<sysdate-7会用到索引。

还有两个特殊声明:

​ 1).select * from AAA where a=:xxx and c=sysdate与 select * from AAA where c=sysdate and a=:xxx;都会用到索引,即与where语句中字段出现的顺序无关;

​ 2).select * from AAA where a=:xxx and b=1;会使用索引,此时A出现,即使其他字段不是索引字段也会使用到索引。

转载自:https://blog.csdn.net/davidwang9527/article/details/2236841

索引左前缀性的三层意思相关推荐

  1. 索引 ---- 最左前缀的解释

    在很多数据库中,当创建多列的索引的时候,会出现最左前缀的现象. 假设有如下表: create table AAA (a varchar2(32) ,b varchar2(32),c date); 在a ...

  2. mysql优化-----多列索引的左前缀规则

    索引优化策略1:索引类型1.1B-tree索引 关注的是:Btree索引的左前缀匹配规则,索引在排序和分组上发挥的作用.注:名叫btree索引,大的方面看都用的二叉树.平衡树.但具体的实现上,各引擎稍 ...

  3. MySQL实验: 实践索引对全列匹配、最左前缀匹配、范围查询等条件的影响以及了解脏读、幻读等...

    索引实验 实验目的:了解索引对于全列匹配,最左前缀匹配.范围查询的影响.实验所用数据库见文章最底部连接. 实验软件版本:5.7.19-0ubuntu0.16.04.1-log (Ubuntu) 实验存 ...

  4. mysql索引最左前缀原则

    mysql索引最左前缀原则 创建索引可以大大提高系统的性能. 第一,通过创建唯一性索引,可以保证数据库表中每一行数据的唯一性. 第二,可以大大加快数据的检索速度,这也是创建索引的最主要的原因. 第三, ...

  5. 数据库性能优化1——正确建立索引以及最左前缀原则

    1. 索引建立的原则 用于索引的最好的备选数据列是那些出现在WHERE子句.join子句.ORDER BY或GROUP BY子句中的列. 仅仅出现在SELECT关键字后面的输出数据列列表中的数据列不是 ...

  6. mysql非聚集索引区间查询_mysql的聚集索引和非聚集索引,回表查询,索引覆盖,最左前缀原则略解...

    什么是聚集索引和非聚集索引 我们知道 Mysql 底层是用 B+ 树来存储索引的,且数据都存在叶子节点.对于 InnoDB 来说,它的主键索引和行记录是存储在一起的,因此叫做聚集索引(clustere ...

  7. 索引的使用—— 验证索引提升查询效率 || 避免索引失效 —— 全值匹配 /最左前缀法则/范围查询右边的列,不能使用索引/不要在索引列上进行运算操作/字符串不加单引号,造成索引失效

    索引的使用 索引是数据库优化最常用也是最重要的手段之一, 通过索引通常可以帮助用户解决大多数的MySQL的性能优化问题 验证索引提升查询效率 查询速度很快,接近0s ,主要的原因是因为id为主键,有索 ...

  8. MySQL 索引 :哈希索引、B+树索引、最左前缀匹配规则、全文索引

    文章目录 索引 什么是索引 索引优缺点与适用场景 常见的索引 哈希索引 自适应哈希索引 B+树索引 聚集索引 非聚集索引 使用方法 联合索引 最左前缀匹配规则 覆盖索引 全文索引 使用方法 索引 什么 ...

  9. 覆盖索引最左前缀原则索引下推

    覆盖索引 如果执行的语句是 select ID from T where k between 3 and 5,这时只需要查 ID 的值,而 ID 的值已经在 k 索引树上了,因此可以直接提供查询结果, ...

最新文章

  1. 抽样方法,采样方法 shuffle
  2. maven笔记(3)
  3. php单引号双引号的区别
  4. pwm控制舵机转动角度程序_01 舵机旋转控制基础
  5. 外链图片也有风险吗?
  6. Mac安装telnet
  7. 真实可行的Python清屏命令
  8. python怎么测试opencv安装是否成功_测试opencv安装成功
  9. oracle8i odac for c,ODAC for delphi
  10. 背景知识:从熵(Entropy)到互信息(MI,Mutual Information)
  11. The day that you see me old
  12. maven仓库的优先级,profile的优先级
  13. 41-fcntl设置文件锁
  14. 720 词典中最长的单词(Trie树)
  15. PTA 天梯赛的善良(20分)[C语言]
  16. 为什么不建议用字符串或者uuid做数据库主键
  17. mysql逻辑结构博客_mysql梳理2
  18. 关于版权声明的格式 (Copyright)
  19. Hadoop配置之 开启不了 8088、19888端口
  20. 【Android】SerialPortFinder学习笔记,显示串口列表

热门文章

  1. phpcms上传php,phpcms怎么上传歌曲文件
  2. 三星浏览器高阶使用技巧-修改CountryCode和UA
  3. 开关电源spice仿真与实用设计_十年电源研发工程师的30条开关电源设计实用经验...
  4. 08/14 国富论笔记
  5. [腾讯面试题]100层楼丢玻璃球问题
  6. fun在matlab里面啥意思_下面是个MATLAB程序,请问fun,和feval,是什么,如何写fun,如何代表这个函数...
  7. mininet应用实践
  8. freetype简介与测试
  9. uniapp实现发送获取验证码
  10. 使用X265编码视频