我有一个名为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'),否则可能不会使用该索引。还有其他的索引吗?如果是这样,他们是本地分区还是全局分区索引? –