Index Full Scan (索引全扫描)
当进行index full scan的时候,oracle定位到索引的root block,
然后到branch block(假如有的话),再定位到第一个leaf block, 然后
根据leaf block的双向链表顺序读取。它所读取的块都是有顺序的,也是
经过排序的,所以index full scan可以用来避免某些sort操作。查询出的
数据都必须从索引中可以直接得到。 这个full scan的名字有点误导人,
其实并不是所有的index block都被读取的,某些分支块是不会读到的。
1. 查询出来的数据都必须从Index中可以直接得到。
2. Index中至少有一个字段是非空 。
3. 可以消除掉排序操作,因为数据已经被index key 排好序了 。
4. 它一个一个地读取block, 不能多块读 。也不能并行。
Index Fast Full Scan (索引快速全扫描)
而index fast full scan则不同,它是从段头开始,读取包含位图块,
root block, 所有的branch block, leaf block,读取的顺序完全由物理存
储位置决定,并采取多块读,每次读取db_file_multiblock_read_count个块。
因为能并行或多块读,index fast full scan不能用来消除sort操作。
1. 这种Index Fast Full Scan 只有在CBO下有效
2. 需要分析Index , 否则优化程序可能不会用它
3. 在Index中取数据,而不是存取table中的数据
4. Index中至少一个字段是非空
5. 不能消除排序操作, 因为数据没排序
6. 与Index Full Scan不一样,用多块读方式读整个Index
7. Index Fast Full Scan 比 正常的Index Full Scan 更快,因为能用多块读方式,且能并行执行
8. Index Fast Full Scan 并行和表的并行是分开的, 可以通过Parallel 来设置
来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/35489/viewspace-671692/,如需转载,请注明出处,否则将追究法律责任。
转载于:http://blog.itpub.net/35489/viewspace-671692/