sql - HANA SQL 性能
问题描述
有人可以帮助我以适当的方式重塑这段代码。该守则是旧守则,希望对其进行改造。但不知道如何做得更好。
SELECT COUNT(*) FROM (
SELECT SRC.CLIENT,SRC.GUID
,COALESCE(SRC.PARTNER_ZSCHEDUL,'') PARTNER_ZSCHEDUL
,COALESCE(SRC.PARTNER_ZSVCUNIT,'') PARTNER_ZSVCUNIT
,COALESCE(SRC.PARTNER_ZPARTAPP,'') PARTNER_ZPARTAPP
,COALESCE(SRC.PARTNER_ZESCOWN,'') PARTNER_ZESCOWN
,COALESCE(SRC.PARTNER_ZESCAPRV,'') PARTNER_ZESCAPRV
,COALESCE(SRC.PARTNER_ZESCRQST,'') PARTNER_ZESCRQST
,COALESCE(SRC.PARTNER_ZPARTORD,'') PARTNER_ZPARTORD
,COALESCE(SRC.PARTNER_ER,'') PARTNER_ER
FROM KCP810_HBP.ZCRMD_ORDERADM_I_EXTN TGT, (
SELECT CLIENT,GUID
, MIN(CASE WHEN PARTNER_FCT = 'ZSCHEDUL' THEN PARTNER END) PARTNER_ZSCHEDUL
, MIN(CASE WHEN PARTNER_FCT = 'ZSVCUNIT' THEN MERGED_PARTNER END) PARTNER_ZSVCUNIT
, MIN(CASE WHEN PARTNER_FCT = 'ZSVCUNIT' THEN PARTNER END) PARTNER_ZSVCUNIT_HR
, MIN(CASE WHEN PARTNER_FCT = 'ZPARTAPP' THEN PARTNER END) PARTNER_ZPARTAPP
, MIN(CASE WHEN PARTNER_FCT = 'ZESCOWN' THEN PARTNER END) PARTNER_ZESCOWN
, MIN(CASE WHEN PARTNER_FCT = 'ZESCAPRV' THEN PARTNER END) PARTNER_ZESCAPRV
, MIN(CASE WHEN PARTNER_FCT = 'ZESCRQST' THEN PARTNER END) PARTNER_ZESCRQST
, MIN(CASE WHEN PARTNER_FCT = 'ZPARTORD' THEN PARTNER END) PARTNER_ZPARTORD
, MIN(CASE WHEN PARTNER_FCT = '00000014' THEN PARTNER END) PARTNER_ER
FROM "_SYS_BIC"."CRM-SV.A-COMMON-VIEWS.Proc.Item/CV_IT_01_PARTNER_ALL" GROUP BY CLIENT,GUID ) SRC
WHERE TGT.CLIENT = SRC.CLIENT
AND TGT.GUID = SRC.GUID
AND ( TGT.PARTNER_ZSCHEDUL != SRC.PARTNER_ZSCHEDUL OR TGT.PARTNER_ZSVCUNIT != SRC.PARTNER_ZSVCUNIT OR
TGT.PARTNER_ZPARTAPP != SRC.PARTNER_ZPARTAPP OR TGT.PARTNER_ZESCOWN != SRC.PARTNER_ZESCOWN OR
TGT.PARTNER_ZESCAPRV != SRC.PARTNER_ZESCAPRV OR TGT.PARTNER_ZESCRQST != SRC.PARTNER_ZESCRQST OR
TGT.PARTNER_ZPARTORD != SRC.PARTNER_ZPARTORD OR TGT.PARTNER_00000014 != SRC.PARTNER_ER));
解决方案
To improve the speed, if you want to keep using SQL script, firstly you should replace the where statements with a join statement like below:
SELECT COUNT(*) FROM (
SELECT SRC.CLIENT,SRC.GUID
,COALESCE(SRC.PARTNER_ZSCHEDUL,'') PARTNER_ZSCHEDUL
,COALESCE(SRC.PARTNER_ZSVCUNIT,'') PARTNER_ZSVCUNIT
,COALESCE(SRC.PARTNER_ZPARTAPP,'') PARTNER_ZPARTAPP
,COALESCE(SRC.PARTNER_ZESCOWN,'') PARTNER_ZESCOWN
,COALESCE(SRC.PARTNER_ZESCAPRV,'') PARTNER_ZESCAPRV
,COALESCE(SRC.PARTNER_ZESCRQST,'') PARTNER_ZESCRQST
,COALESCE(SRC.PARTNER_ZPARTORD,'') PARTNER_ZPARTORD
,COALESCE(SRC.PARTNER_ER,'') PARTNER_ER
FROM KCP810_HBP.ZCRMD_ORDERADM_I_EXTN TGT
INNER JOIN (
SELECT CLIENT,GUID
, MIN(CASE WHEN PARTNER_FCT = 'ZSCHEDUL' THEN PARTNER END) PARTNER_ZSCHEDUL
, MIN(CASE WHEN PARTNER_FCT = 'ZSVCUNIT' THEN MERGED_PARTNER END) PARTNER_ZSVCUNIT
, MIN(CASE WHEN PARTNER_FCT = 'ZSVCUNIT' THEN PARTNER END) PARTNER_ZSVCUNIT_HR
, MIN(CASE WHEN PARTNER_FCT = 'ZPARTAPP' THEN PARTNER END) PARTNER_ZPARTAPP
, MIN(CASE WHEN PARTNER_FCT = 'ZESCOWN' THEN PARTNER END) PARTNER_ZESCOWN
, MIN(CASE WHEN PARTNER_FCT = 'ZESCAPRV' THEN PARTNER END) PARTNER_ZESCAPRV
, MIN(CASE WHEN PARTNER_FCT = 'ZESCRQST' THEN PARTNER END) PARTNER_ZESCRQST
, MIN(CASE WHEN PARTNER_FCT = 'ZPARTORD' THEN PARTNER END) PARTNER_ZPARTORD
, MIN(CASE WHEN PARTNER_FCT = '00000014' THEN PARTNER END) PARTNER_ER
FROM "_SYS_BIC"."CRM-SV.A-COMMON-VIEWS.Proc.Item/CV_IT_01_PARTNER_ALL" GROUP BY CLIENT,GUID ) SRC
ON TGT.CLIENT = SRC.CLIENT
AND TGT.GUID = SRC.GUID
AND ( TGT.PARTNER_ZSCHEDUL != SRC.PARTNER_ZSCHEDUL
OR TGT.PARTNER_ZSVCUNIT != SRC.PARTNER_ZSVCUNIT
OR TGT.PARTNER_ZPARTAPP != SRC.PARTNER_ZPARTAPP
OR TGT.PARTNER_ZESCOWN != SRC.PARTNER_ZESCOWN
OR TGT.PARTNER_ZESCAPRV != SRC.PARTNER_ZESCAPRV
OR TGT.PARTNER_ZESCRQST != SRC.PARTNER_ZESCRQST
OR TGT.PARTNER_ZPARTORD != SRC.PARTNER_ZPARTORD
OR TGT.PARTNER_00000014 != SRC.PARTNER_ER));
If this doesn't help you, you should use HANA's Analytic Views for which you could read here.
推荐阅读
- python - python中使用pickle的基于类的字典
- delphi - Delphi如何加载存储在数据库中的报告
- java - Intelli IDEA 没有启动 32bit 安装的 jvm.dll
- python-3.x - 为什么 Python 的模块 os 不运行 chromehtml2pdf 命令?
- python - vs中的python问题
- html - 更改容器宽度属性时如何触发列响应?
- fat-free-framework - 在 Fat Free Framework 中,是否可以在模板中显示缺失的键?
- java - 在 OjAlgo 的 Primitive64Store 中的特定列和行处插入 Access2D 元素
- html - Fullcalendar 一半时间GridWeek 像一天一样查看GridWeek
- python - 如何在 Python 中打印字符串中的内容?