Я создал отчет, используя rank().Оптимизация запроса-Window sort
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;
И я получаю следующий план выполнения.
Как вы видите, сортировка и хэш-группа окна не оптимизированы эффективно. Что лучше всего оптимизировать?
План выполнения выглядит хорошо для меня. Запрос включает в себя все строки из таблицы фактов, а соединения дешевы, поэтому индекс там не поможет. Если данные сгруппированы и ранжированы, в плане должна быть операция группировки и сортировки. Стоимость невелика, поэтому параллелизм не стоит. Я не вижу очевидной проблемы с этим планом выполнения. Есть ли информация, которую вы можете добавить? –