|
Оптимизация запроса
|
|||
---|---|---|---|
#18+
Есть приведенный ниже запрос. Можно ли его оптимизировать? Не бросайте камни, не так давно начал изучать это дело. Выбираю порядка 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.11.2020, 09:53 |
|
Оптимизация запроса
|
|||
---|---|---|---|
#18+
bors Выбираю порядка 800.000 элементов. Это выгрузка куда-то? Человеку такое не нужно. Первое, что смотрим - план запроса и время выполнения. ... |
|||
:
Нравится:
Не нравится:
|
|||
19.11.2020, 09:57 |
|
Оптимизация запроса
|
|||
---|---|---|---|
#18+
dmdmdm bors Выбираю порядка 800.000 элементов. Это выгрузка куда-то? Человеку такое не нужно. Первое, что смотрим - план запроса и время выполнения. Да, выгрузка в форму списка документов (для работы, оказывается такое нужно). Время выполнения около 25 секунд. По плану всё просто: запрос на сервер, обработка запроса сервером, возврат значений и выгрузка в таблицу ... |
|||
:
Нравится:
Не нравится:
|
|||
19.11.2020, 10:02 |
|
Оптимизация запроса
|
|||
---|---|---|---|
#18+
bors По плану всё просто: запрос на сервер, обработка запроса сервером, возврат значений и выгрузка в таблицу *ROFL* В мемориз. Поиск . Следующий вопрос - что вас не устраивает, что 800 тысяч строк выгружаются 25 секунд? Это весьма неплохо. ... |
|||
:
Нравится:
Не нравится:
|
|||
19.11.2020, 10:16 |
|
Оптимизация запроса
|
|||
---|---|---|---|
#18+
dmdmdm Следующий вопрос - что вас не устраивает, что 800 тысяч строк выгружаются 25 секунд? Это весьма неплохо. Я же говорю: не так давно начал изучать и писать SQL запросы, откуда мне знать хорошо это или плохо, всегда хочется большего. Это не единственный запрос который использую при разработке, просто на его примере хотел узнать что можно улучшить и можно ли вообще, или стоит лезть в программную реализацию ПО ... |
|||
:
Нравится:
Не нравится:
|
|||
19.11.2020, 10:25 |
|
Оптимизация запроса
|
|||
---|---|---|---|
#18+
В целях повышения собственной образованности и сравнения производительности советую изучить UTL_FILE. ... |
|||
:
Нравится:
Не нравится:
|
|||
19.11.2020, 11:44 |
|
Оптимизация запроса
|
|||
---|---|---|---|
#18+
dmdmdm, спасибо за совет;) ... |
|||
:
Нравится:
Не нравится:
|
|||
19.11.2020, 12:15 |
|
Оптимизация запроса
|
|||
---|---|---|---|
#18+
dmdmdm В целях повышения собственной образованности и сравнения производительности советую изучить UTL_FILE. ага, без доступа к серверу ..... stax ... |
|||
:
Нравится:
Не нравится:
|
|||
19.11.2020, 12:23 |
|
Оптимизация запроса
|
|||
---|---|---|---|
#18+
Stax, а я уж начинал думать что всё таки лыжи не едут, ан нет всё же=) ... |
|||
:
Нравится:
Не нравится:
|
|||
19.11.2020, 12:26 |
|
Оптимизация запроса
|
|||
---|---|---|---|
#18+
Stax, человеческое Вам спасибо за объяснения. Запрос я пишу в компоненте ADOQuery в Delphi. Попробовал поиграться с SQL Plus и парадокс, через Delphi спокойно конекчусь к бд, через SQL PLus error, загадки ... |
|||
:
Нравится:
Не нравится:
|
|||
19.11.2020, 13:00 |
|
Оптимизация запроса
|
|||
---|---|---|---|
#18+
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.11.2020, 13:09 |
|
|
start [/forum/topic.php?fid=52&msg=40020312&tid=1880694]: |
0ms |
get settings: |
8ms |
get forum list: |
12ms |
check forum access: |
2ms |
check topic access: |
2ms |
track hit: |
139ms |
get topic data: |
9ms |
get forum data: |
3ms |
get page messages: |
42ms |
get tp. blocked users: |
1ms |
others: | 13ms |
total: | 231ms |
0 / 0 |