首先在关联的字段上建立索引,AND (dsk_time NOT BETWEEN TO_DATE ('2004-1-22', 'yyyy-mm-dd') AND TO_DATE ('2004-1-28', 'yyyy-mm-dd') 上面改成 and dsk_time <TO_DATE ('2004-1-22', 'yyyy-mm-dd') and dsk_time >TO_DATE ('2004-1-28', 'yyyy-mm-dd') 类似的语句都改,union all一样要用.用了比or效率高,再分析以下你的需求,看看是不是可以把子查询去掉.
要几个小时建议用package
set autotrace traceonly explain
AND TO_DATE ('2004-1-28', 'yyyy-mm-dd')
上面改成
and dsk_time <TO_DATE ('2004-1-22', 'yyyy-mm-dd')
and dsk_time >TO_DATE ('2004-1-28', 'yyyy-mm-dd')
类似的语句都改,union all一样要用.用了比or效率高,再分析以下你的需求,看看是不是可以把子查询去掉.