【发布时间】:2016-10-14 00:15:49
【问题描述】:
我使用 rank() 生成了一份报告。
select sa.COUNTRY,
sa.CITY,
to_char(sum(r.TOTAL_SERVICE_COST)) as Total_Service_Cost,
rank() OVER (PARTITION BY sa.COUNTRY
ORDER BY SUM(r.TOTAL_SERVICE_COST) Desc) as City_Rank_by_country
from ROUTESFACT r,SOURCEAIRPORT_DIM sa
where r.SOURCEAIRPORTID=sa.SOURCE_AIRPORTID
GROUP BY sa.COUNTRY,sa.CITY;
如您所见,窗口排序和散列分组依据并未得到有效优化。 对此进行优化的最佳方法是什么?
【问题讨论】:
-
执行计划对我来说看起来不错。该查询包括事实表中的所有行,并且连接很便宜,因此索引在那里无济于事。如果对数据进行分组和排序,那么计划中就必须有分组和排序操作。成本很小,所以并行性不值得。我没有看到这个执行计划有明显的问题。有什么可以补充的吗?
标签: database oracle query-optimization