2017-05-22 dba日记,使用add_months函数解决现实SQL性能问题

来源:互联网 发布:网络谣言的危害 案例 编辑:程序博客网 时间:2024/05/21 14:02

背景:

在数据库DB1上发现有一sql语句没有正确使用索引(没有使用到期望的索引)。

分析:

1.索引结构: create index idx_t1_01 on t1(period);

        2.sql语句关键写法:WHERE TRUNC(MONTHS_BETWEEN(SYSDATE,TO_DATE(period,'YYYYMM'))) = 4;   <<<取出period是当前日期4个月前的数据

3. 症状所在,在索引关键字上使用函数,导致无法使用索引。

优化:

这个业务逻辑很简单,“取出period是当前日期4个月前的数据

使用add_months改写

period=to_char(add_months(sysdate,-4),'yyyymm');

效果:改写后,一致读从55116下降至12

关键点:

1.读懂SQL逻辑,检查SQL的编写是否高效SQL的规范。(来源于sql诊断思维图)

2. add_months函数的第二个参数,不单可以接受正数,还可以接受负数。

 

原创粉丝点击