Oracle 的索引中字段数量与查询效率对比分析

某日,参加一个面试,面试技术总监听说我搞过几年数据库,比较感兴趣,于是即时问了一个问题,关于关系数据库中千万级数据库中索引内字段数量多少与查询效率问题,提问大概是如果两个数据表各有千万条记录,25个字段,其中建立索引,一个数据表内建立的索引内包含4个字段,另外一个表内建立的索引包含3个字段,提问哪个查询效率高?我略微思考了一下,回答是索引建有4个字段的那个数据表,但是答案是错误的,对方表示应该是索引建有3个字段那个数据表;我的内心虽百般不认同,但鉴于对方权威,于是含糊过去,回家百思不得其解,网上搜索相关答案也没有准确说法, 于是,自己做了个实际测试,俗话说,实践是检验真理的唯一标准,这里只限于建立普通索引,于是乎,我准备了个两个数据表如下:

Oracle 的索引中字段数量与查询效率对比分析

Oracle 的索引中字段数量与查询效率对比分析

其实也就是一个数据表,我复制两份而已,接近千万级数据,并且分别在两个数据表建立索引,其中一个索引包含4个字段,一个索引包含3个字段,都是普通索引,建立索引如下:

Oracle 的索引中字段数量与查询效率对比分析

T1数据表建立的索引包含3个字段,另外一个数据表包含4个字段,下面就是对两个数据表检索效率 的比对。

首先对建有索引为3个字段的数据表进行检索,返回结果为:

Oracle 的索引中字段数量与查询效率对比分析


然后清缓存,对索引建有4个字段的数据表进行检索,得到结果为:

Oracle 的索引中字段数量与查询效率对比分析

返回的结果显示,索引建有3个字段的数据表返回的记录是比索引建有4个字段的返回记录是要多的,耗时也相应增加,与对方技术总监所阐述的结果相悖,就普通索引来看,实际检验结果如此,请问相关技术专家问题出在哪里?