2011-12-08 121 views
0

下面的簡單SQL將返回1條記錄,並執行相當快。 它也有很好的解釋計劃(使用P1指標是主要關鍵指標)。SQL解釋計劃調整

唯一的問題是它需要巨大的緩衝區,即字節= 3.47億(從計劃複製下面)。

6 TABLE ACCESS BY INDEX ROWID TABLE SIEBEL.S_ORG_EXT Cost: 2 Bytes: 347,432,257 Cardinality: 9,390,061 

表S_ORG_EXT和S_OPTY的容量很大。這是我無法控制的事情。 你有什麼想法如何優化計劃使用較小的緩衝區大小?

在此先感謝!

SQL:

SELECT A1.NAME 
    FROM SIEBEL.S_ORG_EXT A1, SIEBEL.S_OPTY A3, SIEBEL.S_BU A4 
WHERE  A1.ROW_ID = A3.PR_DEPT_OU_ID         --4 
     AND A3.ROW_ID = :V1             --1 
     AND A4.ROW_ID = A3.BU_ID           --2 
     AND A3.PR_DEPT_OU_ID IS NOT NULL         --3 

計劃

SELECT STATEMENT ALL_ROWSCost: 5 Bytes: 77 Cardinality: 1     
    7 NESTED LOOPS Cost: 5 Bytes: 77 Cardinality: 1    
     4 NESTED LOOPS Cost: 3 Bytes: 40 Cardinality: 1   
      2 TABLE ACCESS BY INDEX ROWID TABLE SIEBEL.S_OPTY Cost: 3 Bytes: 31 Cardinality: 1  
       1 INDEX UNIQUE SCAN INDEX (UNIQUE) SIEBEL.S_OPTY_P1 Cost: 2 Cardinality: 1 
      3 INDEX UNIQUE SCAN INDEX (UNIQUE) SIEBEL.S_BU_P1 Cost: 0 Bytes: 1,485 Cardinality: 165 
     6 TABLE ACCESS BY INDEX ROWID TABLE SIEBEL.S_ORG_EXT Cost: 2 Bytes: 347,432,257 Cardinality: 9,390,061   
      5 INDEX UNIQUE SCAN INDEX (UNIQUE) SIEBEL.S_ORG_EXT_P1 Cost: 1 Cardinality: 1  

回答