我有一個名爲FCT含2.5億條記錄,索引(dwh_key日期,結束日期),並在END_DATE(每日)分區表如何提高我的選擇性能
我有這樣的選擇:
SELECT FCT.ACCOUNT_NUMBER,
FCT.PRODUCT_CODE,
FCT.PRODUCT_START_DATE,
FCT.PRODUCT_END_DATE,
FCT.SVC_FEATURE_ATTRIBUTE,
FCT.SVC_FEATURE_ATTR_START_DATE,
FCT.END_DATE
FROM
FCT
WHERE
FCT.PRODUCT_CODE IN ($$prm1,
$$prm2,
$$prm3)
OR
(
FCT.END_DATE = TO_DATE('31/12/2999', 'DD/MM/YYYY')
AND
FCT.SVC_FEATURE_ATTRIBUTE in($$prm4,
$$prm5)
)
它大約需要20分鐘+。
我需要,使其更快..但想不到的東西,在這裏做..
首先,將其拆分爲2個工會選擇 – cutzero
是否使用您當前的索引?您是否檢查執行計劃 –
您只提到一個索引:'(dwh_key,end_date)',但不要在查詢中爲'dwh_key'設置過濾條件。因此,除非'dwh_key'具有非常低的基數(在這種情況下它可能會執行'INDEX SKIP SCAN'),否則可能不會使用該索引。還有其他的索引嗎?如果是這樣,他們是本地分區還是全局分區索引? –