проблема оптимизации оракулов - PullRequest
0 голосов
/ 19 октября 2019

Есть ли способ оптимизировать запрос ниже?

SELECT RNC,
       CELLNAME,
       SUM(C310484605) AS DL_PWR_FAIL,
       SUM(C310484607) AS UL_PWR_FAIL,
       SUM(C310484609) AS HSDPA_FAIL,
       SUM(C310484611) AS HSUPA_FAIL
FROM ZTE_UTRAN.UCELLCAP1
WHERE CELLNAME LIKE '_____B%'
  AND DATETIME >=TRUNC(SYSDATE)-7
GROUP BY RNC,
         CELLNAME
ORDER BY HSDPA_FAIL DESC

это занимает как часы в исполнении. Функция «сумма» замедляет его, но я не знаю, как это исправить. Любая помощь будет оценена. заранее спасибо.

1 Ответ

1 голос
/ 19 октября 2019

Не может быть конкретного ответа, просто глядя на запрос.

  • Вы должны проверить план выполнения запроса, который показывает, как база данных будет выполнять запрос и на что тратится большая часть времени.

  • затем, основываясь на результатах, вы можете захотеть иметь индексы для столбцов, используемых в «group by» или иметь разделы и т. д.

Общие замечания-

  1. Даже еслиу вас есть индекс для столбца CELL_NAME, это не дает никаких преимуществ, так как вы используете предикат like, где start не постоянен. Если это что-то вроде (например, «ab *»), тогда будет полезен индекс.
  2. Добавить индекс по группам по столбцам.
...