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
以下の例では、MAKEIND
MAKEDEP
オプションを使って依存関係を逆転させています。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
>)