Używam tego samego SQL (poniżej), w 2 różnych środowiskach z tym samym zestawem indeksu i rozmiarem tabeli. Ale dali mi 2 różne wyjaśnić plany (attached)sam SQL, ale inny plan wyjaśniający
- używa Merge Dołącz kartezjański - bardzo powolny
- wykorzystuje PX Koordynator/PX Wyślij/PX ODBIORU - bardzo szybko
Query :
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)
Każdy pomysł, co jest możliwe, aby spowodować tę różnicę? A co oznacza 2-ty plan wyjaśniający (rzeczy PX)?
Zauważ, że nie szukam zmiany zapytania SQL (zamrożenie w produkcji).
Wielkie dzięki.
Dzięki Gary, masz rację. Stwierdziłem, że problem jest spowodowany przez "indeksy" posiadające stopień DEFAULT. Myślę, że to by zajęło wartość stopnia z poziomu sesji bazy danych, która mogłaby być inna. Po wymuszeniu stopnia na poziomie indeksu na 4, udało mi się go rozwiązać. Dzięki. – iwan