Oracle使用索引比全表扫描慢,分区表不走索引,全表扫描为何效率更高?

本文探讨了在Oracle数据库中,对于一个包含400多万条记录的分区表TK_TASKINFO_FINISH_DT,全表扫描在特定查询条件下比使用索引的效率更高的现象。数据分布在2011年6月至2012年12月之间,通过对比不同类型的索引(全局索引和本地分区索引)与全表扫描的执行计划和性能,发现全表扫描在查询特定时间范围的数据时,其成本和时间都优于使用索引。文章提出了问题:在查询记录数远小于表总记录数的情况下,为何优化器选择了全表扫描而非索引。
摘要由CSDN通过智能技术生成

概述:

TK_TASKINFO_FINISH_DT是一个分区表,是create_time字段做为分区,按每月做分区

数据量有400多万,数据分布如下:

SQL>   Select to_char(create_time,'yyyymm'),Count(1) From TK_TASKINFO_FINISH_DT

2    Group By to_char(create_time,'yyyymm')

3    Order By to_char(create_time,'yyyymm') ;

TO_CHAR(CREATE_TIME,'YYYYMM')   COUNT(1)

----------------------------- ----------

201106                            262911

201107                            283460

201108                            299529

201109                            296482

201110                            246138

201111                            221006

201112                            226557

201201                            250414

201202                            191847

201203                            223651

201204                            225312

201205                            244067

201206                            212158

201207                            232627

201208                            241701

201209                            244185

201210                            221444

201211                            213679

201212                            144487

已经做过统计信息的收集和shrink操作

问题:发现在下面的语句默认不走索引,全表扫描效率远大于走索引的效率。

--全表扫描

SQL> Select * From TK_TASKINFO_FINISH_DT t Where create_time Between to_date('2011-08-02',

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值