相同的SQL但不同的解释计划

iwa*_*wan 5 sql oracle performance setting

我在具有相同索引集和表大小的2个不同环境中运行相同的SQL(下面).但是他们给了我2个不同的解释计划(附后)

  1. 使用合并加入笛卡尔 - 非常慢
  2. 使用PX协调器/ PX发送/ PX接收 - 非常快

查询:

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)
Run Code Online (Sandbox Code Playgroud)

知道造成这种差异的可能原因是什么?第二个解释计划(PX的东西)是什么意思?

请注意,我不是在寻找更改SQL查询(在生产中冻结).

非常感谢.

Gar*_*ers 8

PX表示并行处理.由于会话设置(或者如果其他数据库是不同的版本或版本),可能在其他数据库上不可用.