2016-10-19 7 views
1

私はこのクエリがあります:パフォーマンスの問題参加/インデックス

SELECT * 
    FROM (SELECT * 
      FROM jmr_bbi_dife_vendas_neg2 dife 
     WHERE  dife.processado = 'N' 
       AND dife.removido = 'N' 
       AND dife.revertido = 'N' 
       AND TO_DATE(LPAD(dife.DAY, 2, '0') || LPAD(dife.MONTH, 2, '0') || dife.YEAR, 'DDMMYYYY') <= to_date('20160331','YYYYMMDD') 
     ) dife 
     LEFT JOIN jmr_bbi_dade_vendas dade 
      ON  dade.codins = 1 
       AND dade.codneg = 2 
       AND dade.tipdoc_vnd = dife.doc_type 
       AND dade.numdoc_vnd = dife.doc_no 
       AND dade.codart = dife.item 
       AND dade.anoper = dife.year 
       AND dade.mesper = dife.month; 

を、私はDADEにインデックスを作成します。 Index

しかし、私はこのクエリに実行計画を実行すると、インデックスが使用されていません。

Explain Plan

私はすでに完全なテーブルの収集統計を実行しますが、どちらか動作しません。

お願いします。

この2つのテーブル:DIFEとDADEは2つのテーブルの例です。 私の元のテーブルには何百万という行があります。

ありがとうございました!

答えて

0

join-conditionで使用されている両方のテーブルの列にインデックスを作成します。

また、dade.codins = 1 AND dade.codneg = 2を条件に入れる

+0

恐ろしい仲間! 結果を見るために100万行のテーブルを試してみよう! :) –

+0

仲間...働かないでください! :( あなたが言ったように質問を入れたら、結果は返されません.... :( –

+0

これ以上のアイデア?:( –