Optimization 查询优化建议

Optimization 查询优化建议,optimization,Optimization,我正在尝试优化一个脚本,该脚本将用尽假脱机空间并超时。查询的目的是返回三列:Case_ID、CxC1_ECN和CxC2_ECN。最终结果显示一个表格,其中显示了共享相同案例ID的不同ECN,以供比较 脚本针对自身运行一个表。我正在使用TD-Sql助手 非常感谢您对如何改进此脚本以使其更高效的任何见解 Select Distinct CTT_Case.Case_ID, CxC1.ECN as CxC1_ECN, CxC2.ECN as CxC2_ECN From BMGU_CDM

我正在尝试优化一个脚本,该脚本将用尽假脱机空间并超时。查询的目的是返回三列:Case_ID、CxC1_ECN和CxC2_ECN。最终结果显示一个表格,其中显示了共享相同案例ID的不同ECN,以供比较

脚本针对自身运行一个表。我正在使用TD-Sql助手

非常感谢您对如何改进此脚本以使其更高效的任何见解

Select Distinct CTT_Case.Case_ID, 
    CxC1.ECN as CxC1_ECN,
    CxC2.ECN as CxC2_ECN
From BMGU_CDM.CTT_Case
    Join BMGU_CDM.CTT_Case_x_Cust CxC1 On CxC1.Case_ID = CTT_Case.Case_ID
    Join BMGU_CDM.CTT_Case_x_Cust CxC2 On CxC2.Case_ID = CxC1.Case_ID And CxC2.ECN<> CxC1.ECN;
选择不同的CTT\u Case.Case\u ID,
CxC1.ECN作为CxC1\u ECN,
CxC2.ECN作为CxC2\u ECN
来自BMGU_CDM.CTT_案例
在CxC1上加入BMGU_CDM.CTT_Case_x_Cust CxC1.Case_ID=CTT_Case.Case_ID
在CxC2上加入BMGU_CDM.CTT_Case_x_Cust CxC2.Case_ID=CxC1.Case_ID和CxC2.ECN CxC1.ECN;

发布解释计划。1)首先,我们在保留行哈希上锁定BMGU_CDM.CxC1进行读取,以防止全局死锁。2) 接下来,我们将BMGU_CDM.CTT_案例锁定为在保留行哈希上读取,以防止全局死锁。3) 我们锁定BMGU_CDM.CxC1进行读取,锁定BMGU_CDM.CTT_Case进行读取。4)我们通过条件为(“NOT(BMGU_CDM.CxC1.Case_ID为NULL)”的所有行扫描,从BMGU_CDM.CxC1执行所有AMPs检索步骤,并将其放入假脱机3(all_AMPs),由(BMGU_CDM.CxC1.Case_ID)的哈希代码重新分配给所有AMPs。假脱机3的大小在低置信度下估计为29753568行(743839200字节)。此步骤的估计时间为0.18秒。5)我们通过条件为(((BMGU_CDM.CTT_Case.Population_Type=1)”的全行扫描,从BMGU_CDM.CTT_案例执行全安培连接步骤,该步骤连接到滑阀3(上次使用)通过all rows scan.BMGU_CDM.CTT_Case和Spool 3使用单个分区散列连接,连接条件为(“Case_ID=BMGU_CDM.CTT_Case.Case_ID”)。结果进入滑阀4(所有_安培),该滑阀本地构建在安培上。Spool 4构建为具有4个列分区的内存优化Spool。假脱机4的大小估计为5950715行(220176455字节),但没有把握。