【发布时间】:2011-02-10 04:16:25
【问题描述】:
我在 2 个具有相同索引集和表大小的不同环境中运行相同的 SQL(如下)。 但是他们给了我两个不同的解释计划 (attached)
- 使用 Merge Join Cartesian -- 非常慢
- 使用 PX Coordinator / PX Send / PX RECEIVE -- 非常快
查询:
SELECT *
FROM SIEBEL.S_PARTY PRTY, SIEBEL.S_CONTACT CONT, HPQ_IF_ENTERPRISE_DIRECTORY ED,SIEBEL.S_BU BU
WHERE PRTY.ROW_ID = CONT.PAR_ROW_ID
AND BU.ROW_ID(+)=CONT.BU_ID
AND CONT.EMP_NUM IS NOT NULL
AND ED.HPSTATUS NOT IN ('Terminated', 'Retired', 'Deceased')
AND ED.EMPLOYEENUMBER = UPPER (LPAD (CONT.EMP_NUM, 8, '0'))
AND (SUBSTR(ED.MODIFYTIMESTAMP,1,14) >= '19800101' OR ED.MODIFYTIMESTAMP IS NULL)
知道导致这种差异的可能原因是什么吗? 2nd explain plan with (PX things) 是什么意思?
请注意,我不是在寻找更改 SQL 查询(在生产中冻结)。
非常感谢。
【问题讨论】:
标签: sql oracle performance setting