在创建索引之前要考虑什么?

时间:2016-03-31 11:52:40

标签: sql oracle join query-optimization

我有以下查询:

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;

我正面临嵌套循环,想要调整此查询,我需要在哪些列上创建索引?

1 个答案:

答案 0 :(得分:1)

一个方便的规则是索引JOIN中使用的列:OE_ORDER_HEADERS_ALL(ORG_ID, HEADER_ID)OE_ORDER_LINES_ALL(ORG_ID, HEADER_ID)

事实上,Oracle可能只会为JOIN使用其中一个,但它会选择更好的一个。