几种索引扫描方式的比较

Oracle执行SQL时会选择最佳的数据扫描路径,包括全表扫描和索引扫描。索引扫描有多种类型,如唯一索引扫描、范围扫描、快速全扫描等。在决定使用哪种扫描方式时,优化器会评估I/O成本,通常考虑块而非行的数量。不同类型的索引扫描在效率和数据排序上有差异,例如索引唯一性扫描通常比范围扫描更快。
摘要由CSDN通过智能技术生成

       Oracle在执行SQL之前,首先需要为其确定执行计划。从大的角度看,执行计划包含数据扫描路径的确定和数据集合处理方式的确定两大方面的内容。
       数据扫描路径特指SQL语句如何从数据库中找到所查询的数据,也就是定位数据的方法。Oracle优化器将选择数据扫描的最佳路径作为执行计划中的数据扫描计划。
       从物理操作上看,Oracle会采用以下两种方式来进行读取:
       单块读取数据:读取单位为Oracle数据库块。即便我们仅需要一行数据,Oracle也会将数据行所在数据块的数据完整地读入数据缓存。
       连续读取数据:读取单位有Oracle参数db_file_multiblock_read_count决定(也取决于操作系统一次IO的最大值),该参数的默认设置为16.
       那么如何获得需要读取那些数据块呢?
        这就需要从Oracle执行数据扫描的路径来看。从逻辑角度讲,数据扫描会有两种可能——基于表的全表路径扫描和基于索引的索引路径扫描。
       1、全表扫描(FTS,Full Table Scans)
       2、索引路径扫描

       索引不仅包含被索引的字段值,还包含行的位置标识Rowid,如果语句只检索索引字段,Oracle将直接从索引中读取而不需要通过Rowid去访问表,如果语句通过索引检索其他字段值,则Oracle通过索引获得Rowid从而迅速找到具体的行。


       索引扫描类型:
       1) 唯一索引扫描(Index Unique Scans) 
       2) 索引范围扫描(Index Range Sca

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值