DB2数据库查询过程(Query Processing)----多索引访问(Multiple Index Access)

本文介绍了DB2数据库中的多索引访问技术,如何通过使用多个索引来显著提高查询效率。通过举例说明,当有多个索引可用时,优化器如何结合这些索引以减少数据读取,从而提升查询性能。多索引访问通过提取并交集不同索引的RID列表来获取最终结果,减少了I/O操作,提高了大数据量表的查询速度。
摘要由CSDN通过智能技术生成

引言

考虑下面的情况:

一张表T,有列C1,C2,C3,C4,C5。其中C1上有索引C1X,C2上有索引C2X,C3,C4,C5上有索引C345X。表中有100000000行数据。

查询语句:

Select * From T Where C1=20 And C2=5 And C3=11;

前面介绍过,对于一张表,只能使用它的一个索引进行索引扫描,上面查询的三个谓词都是可索引谓词,假设这三个谓词的过滤因子都是1/100,优化器选择使用C1X索引。那么就需要读入100000000*1/100=1000000行数据。I/O开销无疑是可观的。

对于这样的访问方案,我们认为它太浪费索引了!三个索引,只用一个,导致另外两个谓词连筛选谓词都算不上(筛选谓词起码能对索引项进行筛选呢)。

如果能够同时使用三个索引,那么三个谓词合起来的过滤因子就是1/100*1/100*1/100=1/1000000,最终需要读入的数据行为100000000*1/1000000=100行,效率根本不能相提并论!

但是,这样的访问方式存在吗?在DB2中,是存在的。这就是所谓的多索引访问。


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值