什么是过滤列过滤列是一种存在于where子句中,同时上面也有索引,能起到过滤数据,但是不能在索引片中生效仅能增加索引片厚度的一种列。目的是减少回表。 注:从过滤列的定义可知,并不是所有的列都能够在索引片中发挥作用,仅仅只是占位。 如何判断是否是过滤列1. 首先我们需要查看目标列是否在索引中,然后再查看索引中列的顺序,并且要从左到右查看,因为列在索引中越靠左对索引效率影响越大,比如索引idxname(a,b,c,d)。2. 查看SQL语句中where子句中是否有以下情况:(1)是否至少拥有一个简单的谓词(比如a = ’xxx’)。如果有,这个列就是匹配列;如果没有,这个列以及后面的索引列都是非匹配列。 (2)如果是个范围谓词(比如b > xxx),那么除了这个列以外,剩下的列都是非匹配列 (3)如果在最后一个匹配列之后的非匹配索引列,也有一个简单的谓词(比如c = ’xxx’),那么这个列就是过滤列。 为了方便理解,我们来看看这个SQL: create index idx_stud on students(classno,grade,location,age); select studname from students where classno = 101 and grade > 90 and location = ’bj’;1. classno这个索引列在索引的第一个,并且是个等值谓词,所以是个最简单的谓词条件,满足第一个条件,因此classno是匹配列,将在索引片中发挥作用。2. grade这个索引列在索引的第二个,而且between是个范围谓词,也满足第二个条件,因此grade是匹配列,将在索引片中发挥作用。3. location这个索引列在索引的第三个,并且是个等值谓词,虽然是个最简单的谓词条件,但是它排在grade这个范围谓词的后面,由第二和第三个条件可知,它不能参与匹配过程,也不会在索引片中发挥作用(仅增加了索引片厚度),但参与了索引过滤,所以是过滤列。 但是不要因为它是过滤列而且不参与索引匹配便觉得它不重要,location列几乎和classno、grade两列同等重要。 综上所述,该SQL一共有两个匹配列(classno和grade)和一个过滤列(location),所以当这个SQL访问的表中有数据同时满足这三个谓词条件时,才会访问表中的数据。如果:1. where子句只有classno和location,如where classno = 101 and location = ’bj’,classno依旧是匹配列,location依旧是过滤列。2. where子句的grade是等值条件,如where classno = 101 and grade = 90 and location = ’bj’,这三列都是匹配列。3. where子句只有grade和location,如where grade > 90 and location = ’bj’,grade和location只能是过滤列,并且索引片的厚度就是整个索引的大小。
【TUNE_ORACLE】Oracle索引设计思想(二)索引过滤列概述
来源:这里教程网
时间:2026-03-03 16:29:25
作者:
编辑推荐:
下一篇:
相关推荐
-
雷神推出 MIX PRO II 迷你主机:基于 Ultra 200H,玻璃上盖 + ARGB 灯效
2 月 9 日消息,雷神 (THUNDEROBOT) 现已宣布推出基于英
-
制造商 Musnap 推出彩色墨水屏电纸书 Ocean C:支持手写笔、第三方安卓应用
2 月 10 日消息,制造商 Musnap 现已在海外推出一款 Oce
热文推荐
- oracle客户端安装步骤—附图形界面启用失败处理方法
oracle客户端安装步骤—附图形界面启用失败处理方法
26-03-03 - 记一次utlrp.sql脚本执行引发的结果
记一次utlrp.sql脚本执行引发的结果
26-03-03 - Rax App 研发框架背后的思考
Rax App 研发框架背后的思考
26-03-03 - 源码级别人话说:Virtual DOM和DOM diff算法
源码级别人话说:Virtual DOM和DOM diff算法
26-03-03 - oracle uncatalog数据库备份文件
oracle uncatalog数据库备份文件
26-03-03 - 记一次expdp导出任务中某张大表报错问题的解决过程
记一次expdp导出任务中某张大表报错问题的解决过程
26-03-03 - 数据库redolog切换频率统计分析
数据库redolog切换频率统计分析
26-03-03 - 【TUNE_ORACLE】Oracle索引设计思想(一)索引片和匹配列概述
- redolog内容分析
redolog内容分析
26-03-03 - 【TUNE_ORACLE】Oracle Hint之概念与用法
【TUNE_ORACLE】Oracle Hint之概念与用法
26-03-03
