powered by simpleCommunicator - 2.0.44     © 2025 Programmizd 02
Форумы / Oracle [игнор отключен] [закрыт для гостей] / TOP-100 на Oracle - performance
1 сообщений из 1, страница 1 из 1
TOP-100 на Oracle - performance
    #32066223
pvtl
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Вопрос у меня такой.
Предположим таблица Appointments имеет 450000 записей.
Приведенный запрос выполняется 2 сек.

SELECT * FROM (
SELECT A.Appt_Date zzzz
FROM Appointments A
ORDER BY zzzz DESC
) WHERE ROWNUM <= 100


А такой запрос выполнятеся уже 9 сек:

SELECT * FROM (
SELECT
A.Appt_Date zzzz,
CASE WHEN (DECODE(NVL(A.Activity, 0), 0, 0, -1) <> 1) THEN 1 ELSE 0 END "1",
CASE WHEN (DECODE(NVL(A.Activity, 0), 0, 0, -1) = 1) THEN ' - done' ELSE '' END "2",
CASE WHEN (DECODE(NVL(A.Activity, 0), 0, 0, -1) = 1) THEN ' - done' ELSE '' END "3",
CASE WHEN (DECODE(NVL(A.Activity, 0), 0, 0, -1) <> 1) THEN 1 ELSE 0 END "4",
CASE WHEN (DECODE(NVL(A.Activity, 0), 0, 0, -1) = 1) THEN ' - done' ELSE '' END "5",
CASE WHEN (DECODE(NVL(A.Activity, 0), 0, 0, -1) = 1) THEN ' - done' ELSE '' END "6",
CASE WHEN (DECODE(NVL(A.Activity, 0), 0, 0, -1) = 1) THEN ' - done' ELSE '' END "7"
FROM Appointments A
ORDER BY zzzz DESC
) WHERE ROWNUM <= 100


Тут видно, что на каждый CASE добавляется где-то по секунде времени выполнения.
Естессно это обрезанный запрос. Настоящий запрос содержит множество полей и выполнятеся дольше и эти запросы генерятся автоматически программой.
Можно ли как-то предотвратить такую деградацию performance? Т.е. не меняя сильно код который строит запрос, а лишь к примеру добавляя к построенному запросу хинты.
...
Рейтинг: 0 / 0
1 сообщений из 1, страница 1 из 1
Форумы / Oracle [игнор отключен] [закрыт для гостей] / TOP-100 на Oracle - performance
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]