Oracle- 优化SQL

从2019年10月数据库存储设备出现故障,解决故障后,

有个报表(View)从原来2分钟出结果变成60分钟出结果(500行).

用户无法接受如此差的效率,天天要求IT进行改善。

2020年元旦前做过优化行动,没完成就被中断,

今天再次进行优化,

步骤:

1、分析执行计划,提取关键信息

-- TABLE ASSCESS FULL TABLE: AR.RA_CUSTOMER_TRX_ALL RCT
-- Cost: 5,286 Bytes: 887,835 Cardinality: 59,189

创建两个

INDEX 分別:
CREATE INDEX AR.RA_CUSTOMER_TRX_N25 ON AR.RA_CUSTOMER_TRX_ALL
(INTERFACE_HEADER_ATTRIBUTE6)
CREATE INDEX AR.RA_CUSTOMER_TRX_N26 ON AR.RA_CUSTOMER_TRX_ALL
(SET_OF_BOOKS_ID);

2. 分析表的所有字段、所有索引字段、所有索引。

扫描二维码关注公众号,回复: 9535995 查看本文章

     analyze table AR.RA_CUSTOMER_TRX_ALL compute statistics;

3、SQL Script中分四段,每段用UNION ALL并集,

由此分段分析,

第一、二段SQL SELECT 分别耗时9:45、9:50, 添加 HINT提示功能,如: (INDEX( WSH.WSH_NEW_DELIVERIES) ) ,

调整WHERE条件后,分别提升到2分钟、45秒。

再分析第三、四段 ,其效率在20秒内出结果,因此不优化三、四段SQL. 

生成VIEW后,执行View查询只需要 21秒出结果(500行) .

是否真的优化成功还是存在CACHE的优化假象? 观察三天吧。

猜你喜欢

转载自www.cnblogs.com/samrv/p/12398097.html
今日推荐