有一个一亿五千万的分区表,按年分区,53周list子分区,rol_month_rel字段存的是月份,大量重复,但是要求出min和max,索引是不能建的啦,第一次跑15分钟,再单独跑就两三分钟,存储过程里用的,不需要查两次,所以,各位大神,帮忙看看怎么优化一下,出来乍道,没有分数,见谅
SELECT to_char(rol_month_max, 'YYYYMM'), to_char(rol_month_min, 'YYYYMM')
FROM (SELECT /*+ parallel(8)*/
MAX(to_date(rol_month_rel, 'yyyymon', 'NLS_DATE_LANGUAGE = American')) rol_month_max,
MIN(to_date(rol_month_rel, 'yyyymon', 'NLS_DATE_LANGUAGE = American')) rol_month_min
FROM technology_tdt
WHERE bu = v_bu)
参考GPT和自己的思路:
您好,对于这个问题,建议您使用以下几种方法进行优化:
SELECT MAX(rol_month_rel), MIN(rol_month_rel)
FROM technology_tdt
WHERE bu = v_bu;
对表进行分区,可以将子分区合并为一个分区,或者按周进行分区,这样可以减少查询的数据量。
如果确定查询的数据量不会变化,可以使用物化视图(MV)将查询结果提前计算好,直接从物化视图中获取结果,而不必重新计算。
希望我的回答能够对您有所帮助,如有疑问请随时提出。