暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

Oracle 该计划忽略了我的索引

askTom 2018-07-31
349

问题描述

下午好,
我有一个按年份和星期生成报告的表,但是当我执行查询时,TAF被标记。
我试图强制索引,但执行计划忽略了它。
我可以做什么来取索引?,有必要改变索引吗?

我的索引是在字段中组成的 (FIANIO,FISEMANA)

CREATE TABLE PFPROFIN.TAFTREP
( 
 FIIDSUCURSAL       NUMBER(10)    NOT NULL
 FIANIO             NUMBER(4), 
 FISEMANA           NUMBER(2), 
 FIIDPUESTO         NUMBER(38),
 CUOTA              NUMBER(15,2)
 SUMADEUDOR         NUMBER(15,2)
);


SELECT * 
FROM PFPROFIN.TAFTREP 
 WHERE  FISEMANA = :PA_SEMANA 
  AND    FIANIO = :PA_ANIO 

SELECT STATEMENT ALL_ROWS Cost: 223 Bytes: 2,732,729 Cardinality: 40,787 
1 TABLE ACCESS FULL TABLE PFPROFIN.TAFTREP Cost: 223 Bytes: 2,732,729 Cardinality: 40,787 


数据的一个示例:

FIIDSUCURSAL       FIANIO    FISEMANA   FIIDPUESTO    CUOTA   SUMADEUDOR                           
1                   2018       29         25            200      1500
1                   2018       29         24            200      15000
1                   2018       29         25            200      1500
1                   2018       29         25            200      1500
13                  2018       28         25            100      1000
13                  2018       28         25            100      1000


谢谢和问候!!

专家解答

优化器没有选择索引有很多可能的原因。这可能是过时的或缺少的统计数据。

或者全扫描更快。正如汤姆在这里讨论的:

https://asktom.oracle.com/pls/asktom/asktom.search?tag=blocks-read-using-index-vs-full-table-scan

如果您想了解更多有关数据库为什么选择索引 (或不选择索引) 的信息,请观看此视频以及该系列中的其他视频:


「喜欢这篇文章,您的关注和赞赏是给作者最好的鼓励」
关注作者
【版权声明】本文为墨天轮用户原创内容,转载时必须标注文章的来源(墨天轮),文章链接,文章作者等基本信息,否则作者和墨天轮有权追究责任。如果您发现墨天轮中有涉嫌抄袭或者侵权的内容,欢迎发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论