MAKENOTDEP

このOPTIONSは、テーブルがDependent Joinとして使用されないようにすることができます。以下の例では、結合がどのように強制的に独立させられるかを示しています:


SELECT
    soh.customerid,
    soh.subtotal
FROM
    dwh.SalesOrderDetailBig sod
    JOIN /*+ MAKENOTDEP */ pgsql_local_data.SalesOrderHeader soh
        ON sod.salesorderid = soh.salesorderid 
;;


MAKEDEP

このOPTIONSオプションは、プランナに問い合わせるテーブルに、取得されるデータ量を減らすためにDependent Joinを使用するように強制します:


SELECT
    soh.customerid,
    soh.subtotal
FROM
    dwh.SalesOrderDetailBig sod
    JOIN pgsql_local_data.SalesOrderHeader soh
        ON sod.salesorderid = soh.salesorderid 
OPTION MAKEDEP dwh.SalesOrderDetailBig
;;


MAKEIND

以下の例では、MAKEINDMAKEDEPオプションを使って依存関係を逆転させています。SalesOrderDetailBigが最初にクエリされ、その行がSalesOrderHeaderのフィルタリングに使用されます:


SELECT
    soh.customerid,
    soh.subtotal
FROM
    /*+ MAKEIND */ dwh.SalesOrderDetailBig sod
    join /*+ MAKEDEP */ pgsql_local_data.SalesOrderHeader soh
        ON sod.salesorderid = soh.salesorderid 
;;



SELECT g_0.salesorderid AS c_0 FROM dwh.SalesOrderDetailBig AS g_0 ORDER BY c_0
 
SELECT g_0.salesorderid, g_0.customerid, g_0.subtotal FROM pgsql_local_data.SalesOrderHeader AS g_0 WHERE convert(g_0.salesorderid, biginteger) IN (<dependent values>)