欢迎您访问 最编程 本站为您分享编程语言代码,编程技术文章!
您现在的位置是: 首页

以史为鉴:IUS、IFS、IFFS

最编程 2024-05-01 07:20:56
...

IFS: 索引全扫描这里要注意的一点就是不需要扫描所有branch的分支块,因为叶子块与叶子块之间有双向指针,所以找到最左边的叶子块,就可以依序扫描。所以这里可以有以下结论:1 索引键值是排序的,不需要额外对索引键值再一次order 2 通常情况下依序读取则是单块读,因为多块离散读,你就满足不了依序这个条件了。3 通常情况IFS不建议再回表,所以索引全扫描更适合: SQL查询列全在索引键值里,如果隐式对数据的排序有要求,那么索引的键值列的顺序也最好设计合理。order a b c ------ index (a,b,c)

IFFS: 通常IFFS都会拿来与IFS进行比较,那么下面我们来小计一下区别:

1 IFFS 只适用于CBO 2 IFFS使用多块读,并且可以并行执行 3 IFFS执行结果不一定有序,这扫描非以索引键值逻辑结构为准,而是以存储块的物理结构为准。这是逻辑与物理的概念。假如:物理上的两个相邻的索引叶子块A,B,在索引逻辑结构里对应A1,B1叶子块,那么此时,A1,B1在逻辑索引结构里就未必是相邻的。

那么IFFS中索引键,包含了SQL查询访问的所有字段,如果在IFFS基础上加了order by,则可能会变成IFS或FTS

IUS和IRS:

IUS 是索引唯一扫描,唯一就代表扫描到指定的索引键值就立马停止扫描。所以IUS是等值扫描

IRS 范围扫描在你扫描到第一条键值数据的时候,还会继续扫描,直到扫描到不符合查询条件的键值为止才停止扫描。而IRS是不等值查询,所以通常情况下,同一个SQL IUS要比IRS成本要低。