请教这个sql如何优化一下

[复制链接]
查看11 | 回复4 | 2015-7-16 14:18:24 | 显示全部楼层 |阅读模式
RTSELECT
y.kh_type,
y.kh_userid,
f_get_wlzid(y.kh_type,
y.kh_userid,
'2015-07-20 00:00:00',
'2015-09-14 23:59:59',
'0') qcjeid,
(case
when (SELECT fs_datetime
FROM kh_khwlzye
WHERE zkfx = '0'
AND khid = y.kh_userid) BETWEEN
'2015-07-20 00:00:00' AND
'2015-09-14 23:59:59' THEN
''
ELSE
f_get_wlzid(y.kh_type,
y.kh_userid,
'2015-07-20 00:00:00',
'2015-09-14 23:59:59',
'1')
END) qmyeid,
SUM(decode(y.sz_type, '1', y.szje, 0)) jffse,
SUM(decode(y.sz_type, '2', y.szje, 0)) dffse,
SUM(decode(y.yc_type, '1', y.yc_szje, 0)) yc_jffse,
SUM(decode(y.yc_type, '2', y.yc_szje, 0)) yc_dffse,
SUM(decode(y.bxyc_type,
'1',
nvl(y.bxyc_szje, 0),
0)) bxyc_jffse,
SUM(decode(y.bxyc_type,
'2',
nvl(y.bxyc_szje, 0),
0)) bxyc_dffse,
SUM(y.XYZJ) XYZJ,
SUM(y.XYJS) XYJS,
SUM(decode(y.dj_type,
'2',
-y.dj_szje,
y.dj_szje)) dj_szje
FROM ys_wlz y
WHERE 1 = 1
and fs_datetime >= '2015-07-20 00:00:00'
and fs_datetime ='2015-07-20 00:00:00' AND "FS_DATETIME"复制代码

回复

使用道具 举报

千问 | 2015-7-16 14:18:24 | 显示全部楼层
用了OUTLINE?说明之前你们优化过,然后选了这个执行计划。
现在要改成什么样?
回复

使用道具 举报

千问 | 2015-7-16 14:18:24 | 显示全部楼层
anwll 发表于 2015-9-14 18:00
用了OUTLINE?说明之前你们优化过,然后选了这个执行计划。
现在要改成什么样?

没用到outline
回复

使用道具 举报

千问 | 2015-7-16 14:18:24 | 显示全部楼层
filter(("FS_DATETIME">='2015-07-20 00:00:00' AND "FS_DATETIME"='2015-07-20 00:00:00' AND "FS_DATETIME"
ys_wlz 总共有132w条,fs_datetime >= '2015-07-15 00:00:00' and fs_datetime = '2015-07-20 00:00:00'

and fs_datetime <= '2015-09-14 23:59:59'
回复

使用道具 举报

千问 | 2015-7-16 14:18:24 | 显示全部楼层
ZALBB 发表于 2015-9-15 10:42
若 fs_datetime 这个条件常用, 则优先考虑此字段做范围分区, 这样才能达到优化的目的。

...

谢谢!
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

主题

0

回帖

4882万

积分

论坛元老

Rank: 8Rank: 8

积分
48824836
热门排行