2016-03-31 6 views
1

私は、次のクエリを持っている:インデックスを作成する前に考慮すべきことは?

SELECT OEH.HEADER_ID, OEH.ORDER_NUMBER 
       ,oel.line_number 
       ,oel.pricing_quantity_uom as UOM 
       ,oel.attribute1 as customer_length 
       ,oel.attribute6 as theoretical_weight 
FROM OE_ORDER_HEADERS_ALL OEH JOIN 
    OE_ORDER_LINES_ALL OEL 
    ON OEH.ORG_ID = OEL.ORG_ID AND 
     OEH.HEADER_ID = OEL.HEADER_ID 
WHERE OEL.LINK_TO_LINE_ID IS NULL; 

私はネストされたループが直面していると私はインデックスを作成するために必要なものの列に、チューニングするためにこのクエリをしたいですか?

+0

あなたの質問に実行計画、テーブル構造、および現在のインデックスが表示されます。なぜインデックスが必要だと思いますか? –

+0

@AlexPooleこれらはoracle OMテーブルです。索引のために考慮する必要のある列が必要です。非常に長い問合せがありますが、ここに投稿するのはあまり役に立ちません。索引のために考慮する必要のある列を考えたいだけです。 –

答えて

1

便利なルールは、JOINで使用されている列をインデックス化することです。OE_ORDER_HEADERS_ALL(ORG_ID, HEADER_ID)OE_ORDER_LINES_ALL(ORG_ID, HEADER_ID)です。

実際、OracleはおそらくJOINにこれらの1つのみを使用しますが、より良いものを選択します。

+0

select節にある列を含める必要がありますか? –

+1

これは、クエリを少し速くすることができます。しかし、とにかくテーブル全体を読む可能性が高いため、テーブルはページキャッシュにロードされ、大きな違いはありません(一般的に)。 –

関連する問題