Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Oracle Новый топик    Ответить
 Оптимизация запроса  [new]
bors
Member

Откуда:
Сообщений: 27
Есть приведенный ниже запрос. Можно ли его оптимизировать? Не бросайте камни, не так давно начал изучать это дело. Выбираю порядка 800.000 элементов. Заранее спасибо.

SELECT
D.DOC_ID AS "ИНВЕНТАРНЫЙ НОМЕР",
T.DOC_NAME AS "ТИП ДОКУМЕНТА",
D.VERSION_ID AS "НОМЕР ВЕРСИИ",
D.DESIGNATIO AS "ОБОЗНАЧЕНИЕ",
D.NAME AS "НАИМЕНОВАНИЕ",
V.FULLNAME AS "ВЛАДЕЛЕЦ",
DECODE(D.DOC_STATUS, 0, 'Сдан', R.FULLNAME) "РЕДАКТИРУЕТСЯ"
FROM
SYSDBA.DOCLIST D
LEFT JOIN SYSDBA.DOCTYPES T ON T.DOC_TYPE = D.DOC_TYPE
LEFT JOIN SYSDBA.USERS V ON V.USER_ID = D.DESIGNERID
LEFT JOIN SYSDBA.USERS R ON R.USER_ID = D.DOC_STATUS
WHERE ARCHIVE_ID = :P
19 ноя 20, 09:53    [22235105]     Ответить | Цитировать Сообщить модератору
 Re: Оптимизация запроса  [new]
dmdmdm
Member

Откуда: Нижний Новгород
Сообщений: 1647
bors
Выбираю порядка 800.000 элементов.


Это выгрузка куда-то? Человеку такое не нужно.

Первое, что смотрим - план запроса и время выполнения.
19 ноя 20, 09:57    [22235108]     Ответить | Цитировать Сообщить модератору
 Re: Оптимизация запроса  [new]
bors
Member

Откуда:
Сообщений: 27
dmdmdm
bors
Выбираю порядка 800.000 элементов.


Это выгрузка куда-то? Человеку такое не нужно.

Первое, что смотрим - план запроса и время выполнения.


Да, выгрузка в форму списка документов (для работы, оказывается такое нужно). Время выполнения около 25 секунд. По плану всё просто: запрос на сервер, обработка запроса сервером, возврат значений и выгрузка в таблицу
19 ноя 20, 10:02    [22235110]     Ответить | Цитировать Сообщить модератору
 Re: Оптимизация запроса  [new]
dmdmdm
Member

Откуда: Нижний Новгород
Сообщений: 1647
bors
По плану всё просто: запрос на сервер, обработка запроса сервером, возврат значений и выгрузка в таблицу


*ROFL* В мемориз.

Поиск.

Следующий вопрос - что вас не устраивает, что 800 тысяч строк выгружаются 25 секунд? Это весьма неплохо.
19 ноя 20, 10:16    [22235118]     Ответить | Цитировать Сообщить модератору
 Re: Оптимизация запроса  [new]
bors
Member

Откуда:
Сообщений: 27
dmdmdm
Следующий вопрос - что вас не устраивает, что 800 тысяч строк выгружаются 25 секунд? Это весьма неплохо.


Я же говорю: не так давно начал изучать и писать SQL запросы, откуда мне знать хорошо это или плохо, всегда хочется большего. Это не единственный запрос который использую при разработке, просто на его примере хотел узнать что можно улучшить и можно ли вообще, или стоит лезть в программную реализацию ПО
19 ноя 20, 10:25    [22235123]     Ответить | Цитировать Сообщить модератору
 Re: Оптимизация запроса  [new]
dmdmdm
Member

Откуда: Нижний Новгород
Сообщений: 1647
В целях повышения собственной образованности и сравнения производительности советую изучить UTL_FILE.
19 ноя 20, 11:44    [22235195]     Ответить | Цитировать Сообщить модератору
 Re: Оптимизация запроса  [new]
bors
Member

Откуда:
Сообщений: 27
dmdmdm, спасибо за совет;)
19 ноя 20, 12:15    [22235220]     Ответить | Цитировать Сообщить модератору
 Re: Оптимизация запроса  [new]
Stax
Member

Откуда: Ukraine,Lviv
Сообщений: 2798
dmdmdm
В целях повышения собственной образованности и сравнения производительности советую изучить UTL_FILE.

ага, без доступа к серверу

.....
stax
19 ноя 20, 12:23    [22235225]     Ответить | Цитировать Сообщить модератору
 Re: Оптимизация запроса  [new]
bors
Member

Откуда:
Сообщений: 27
Stax, а я уж начинал думать что всё таки лыжи не едут, ан нет всё же=)

Сообщение было отредактировано: 19 ноя 20, 12:21
19 ноя 20, 12:26    [22235226]     Ответить | Цитировать Сообщить модератору
 Re: Оптимизация запроса  [new]
bors
Member

Откуда:
Сообщений: 27
Stax, человеческое Вам спасибо за объяснения.
Запрос я пишу в компоненте ADOQuery в Delphi. Попробовал поиграться с SQL Plus и парадокс, через Delphi спокойно конекчусь к бд, через SQL PLus error, загадки

Сообщение было отредактировано: 19 ноя 20, 12:55
19 ноя 20, 13:00    [22235258]     Ответить | Цитировать Сообщить модератору
 Re: Оптимизация запроса  [new]
Stax
Member

Откуда: Ukraine,Lviv
Сообщений: 2798
bors
Stax, запрос я пишу в компоненте ADOQuery в Delphi. Попробовал поиграться с SQL Plus и парадокс, через Delphi спокойно конекчусь к бд, через SQL PLus error, загадки


по любому надо какую-то примочку запустить

SQL Plus сложновато для начала с интерфейсом

SqlDeveloper можно (он безплатный)

надо побороть проблему (error, загадки), заставте заработать

зы
22235238 накосячил чутку не тот план запостил
но для примера мож и пойдет

зы
если совсем грубо то план можно и в дельфи смотреть
ето результат обычного селекта select * from table(dbms_xplan.display...)
зыы
есть и команда explain plan ...
https://docs.oracle.com/cd/B19306_01/server.102/b14211/ex_plan.htm#i16938

select что надо from plan_table
ето обычная табличка
правильнее (из ссылки)
SELECT PLAN_TABLE_OUTPUT FROM TABLE(DBMS_XPLAN.DISPLAY('MY_PLAN_TABLE', 'st1','TYPICAL'));

.....
stax

Сообщение было отредактировано: 19 ноя 20, 13:11
19 ноя 20, 13:09    [22235266]     Ответить | Цитировать Сообщить модератору
Все форумы / Oracle Ответить