|
|
|
Как оптимизировать громоздкий запрос sql ?
|
|||
|---|---|---|---|
|
#18+
авторselect t1.DDATES, initcap(to_char(t1.DDATES,'DAY','NLS_DATE_LANGUAGE=RUSSIAN')) P_D_RUS, ((SELECT NULL FROM DUAL) ||'['|| (SELECT COUNT (*) FROM D_V_HPK_PLAN_JOURNALS_ADD WHERE trunc(PLAN_DATE)=trunc(t1.DDATES) AND PAYMENT_KIND_ID in (20319110, 24439460, 21178087, 33232, 33233)) ||']'|| (SELECT COUNT(*) FROM D_V_HPK_PLAN_JOURNALS_ADD WHERE trunc(PLAN_DATE)=trunc(t1.DDATES) AND PAYMENT_KIND_ID=20319110 AND nvl(HOSP_HISTORY_DS,0) = 0 ) ||'/'||(SELECT COUNT(*) FROM D_V_HPK_PLAN_JOURNALS_ADD WHERE trunc(PLAN_DATE)=trunc(t1.DDATES) AND PAYMENT_KIND_ID=24439460 AND nvl(HOSP_HISTORY_DS,0) = 0 ) ||'/'||(SELECT COUNT(*) FROM D_V_HPK_PLAN_JOURNALS_ADD WHERE trunc(PLAN_DATE)=trunc(t1.DDATES) AND PAYMENT_KIND_ID=21178087 AND nvl(HOSP_HISTORY_DS,0) = 0 ) ||'/'||(SELECT COUNT(*) FROM D_V_HPK_PLAN_JOURNALS_ADD WHERE trunc(PLAN_DATE)=trunc(t1.DDATES) AND PAYMENT_KIND_ID=33232 AND nvl(HOSP_HISTORY_DS,0) = 0 ) ||'/'||(SELECT COUNT(*) FROM D_V_HPK_PLAN_JOURNALS_ADD WHERE trunc(PLAN_DATE)=trunc(t1.DDATES) AND PAYMENT_KIND_ID=33233 AND nvl(HOSP_HISTORY_DS,0) = 0 )) as DAY_TOTAL, -- НО-1 ((SELECT COUNT(*) FROM D_V_HPK_PLAN_JOURNALS_ADD where trunc(plan_date) >= to_date('01-07-2018', 'dd-mm-yyyy') and trunc(plan_date) <= to_date('31-07-2018', 'dd-mm-yyyy') AND HOSP_PLAN_KIND=75600447 AND nvl(HOSP_HISTORY_DS,0) = 0 /*AND RECORD_STATUS = 1 AND DEP_ID is not null*/ AND PAYMENT_KIND_ID in (20319110, 24439460, 21178087, 33232, 33233)) ||' ('|| (SELECT COUNT(*) FROM D_V_HPK_PLAN_JOURNALS_ADD WHERE HOSP_PLAN_KIND=75600447 and trunc(plan_date) >= to_date('01-07-2018', 'dd-mm-yyyy') and trunc(plan_date) <= to_date('31-07-2018', 'dd-mm-yyyy') AND PAYMENT_KIND_ID=20319110 AND nvl(HOSP_HISTORY_DS,0) = 0 /*AND RECORD_STATUS = 1 AND DEP_ID is not null*/) ||'/'|| (SELECT COUNT(*) FROM D_V_HPK_PLAN_JOURNALS_ADD WHERE HOSP_PLAN_KIND=75600447 and trunc(plan_date) >= to_date('01-07-2018', 'dd-mm-yyyy') and trunc(plan_date) <= to_date('31-07-2018', 'dd-mm-yyyy') AND PAYMENT_KIND_ID=24439460 AND nvl(HOSP_HISTORY_DS,0) = 0 /*AND RECORD_STATUS = 1 AND DEP_ID is not null*/) ||'/'|| (SELECT COUNT(*) FROM D_V_HPK_PLAN_JOURNALS_ADD WHERE HOSP_PLAN_KIND=75600447 and trunc(plan_date) >= to_date('01-07-2018', 'dd-mm-yyyy') and trunc(plan_date) <= to_date('31-07-2018', 'dd-mm-yyyy') AND PAYMENT_KIND_ID=21178087 AND nvl(HOSP_HISTORY_DS,0) = 0 /*AND RECORD_STATUS = 1 AND DEP_ID is not null*/) ||'/'|| (SELECT COUNT(*) FROM D_V_HPK_PLAN_JOURNALS_ADD WHERE HOSP_PLAN_KIND=75600447 and trunc(plan_date) >= to_date('01-07-2018', 'dd-mm-yyyy') and trunc(plan_date) <= to_date('31-07-2018', 'dd-mm-yyyy') AND PAYMENT_KIND_ID=33232 AND nvl(HOSP_HISTORY_DS,0) = 0 /*AND RECORD_STATUS = 1 AND DEP_ID is not null*/) ||'/'|| (SELECT COUNT(*) FROM D_V_HPK_PLAN_JOURNALS_ADD WHERE HOSP_PLAN_KIND=75600447 and trunc(plan_date) >= to_date('01-07-2018', 'dd-mm-yyyy') and trunc(plan_date) <= to_date('31-07-2018', 'dd-mm-yyyy') AND PAYMENT_KIND_ID=33232 AND nvl(HOSP_HISTORY_DS,0) = 0 /*AND RECORD_STATUS = 1 AND DEP_ID is not null*/)||')' ) as NO_1_TOTAL from table (cast (d_pkg_dat_tools.DATES_IN_RANGE(to_date('01-07-2018', 'dd-mm-yyyy'),to_date('31-07-2018', 'dd-mm-yyyy'),1) as D_CL_DATE)) t1 order by t1.DDATES Выкладываю кусок кода т.к весь запрос состоит из 6 кусков кода ,включая вложенные подзапросы. Запрос выполняется оч.долго, коллеги которые работают в программе с этим отчетом просто вешаются,когда он формируется по 10 минут Вопрос, как убрать подзапросы или как мне его правильно оптимизировать ? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.07.2018, 13:10 |
|
||
|
Как оптимизировать громоздкий запрос sql ?
|
|||
|---|---|---|---|
|
#18+
Александер234, почитать про PIVOT или реализацию на CASE/DECODE в версиях, его не поддерживающих... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.07.2018, 13:15 |
|
||
|
Как оптимизировать громоздкий запрос sql ?
|
|||
|---|---|---|---|
|
#18+
... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.07.2018, 13:16 |
|
||
|
Как оптимизировать громоздкий запрос sql ?
|
|||
|---|---|---|---|
|
#18+
Александер234 Код: plsql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28. 29. 30. 31. 32. 33. 34. 35. 36. 37. 38. 39. 40. 41. 42. 43. 44. 45. 46. 47. 48. 49. Выкладываю кусок кода т.к весь запрос состоит из 6 кусков кода ,включая вложенные подзапросы. Запрос выполняется оч.долго, коллеги которые работают в программе с этим отчетом просто вешаются,когда он формируется по 10 минут Вопрос, как убрать подзапросы или как мне его правильно оптимизировать ? Хотя, всё равно - нечитабельно... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.07.2018, 13:17 |
|
||
|
Как оптимизировать громоздкий запрос sql ?
|
|||
|---|---|---|---|
|
#18+
Щукина Анна,читал я про pivot, но дело в том , что он мне все суммирует т к таблица у меня одна точнее представление, а данные то нужно достать разные из этого представленияб согласно условиям. Как быть не знаю Вот как делал : авторSELECT * FROM ( SELECT COUNT(*) cnt, 'HOSP_PLAN_KIND' id FROM D_V_HPK_PLAN_JOURNALS_ADD where trunc(plan_date) >= to_date('01-07-2018', 'dd-mm-yyyy') and trunc(plan_date) <= to_date('31-07-2018', 'dd-mm-yyyy') AND PAYMENT_KIND_ID in 20319110 UNION ALL SELECT COUNT(*) cnt, 'HOSP_PLAN_KIND' id FROM D_V_HPK_PLAN_JOURNALS_ADD where trunc(plan_date) >= to_date('01-07-2018', 'dd-mm-yyyy') and trunc(plan_date) <= to_date('31-07-2018', 'dd-mm-yyyy') AND PAYMENT_KIND_ID in 24439460 UNION ALL SELECT COUNT(*) cnt, 'HOSP_PLAN_KIND' id FROM D_V_HPK_PLAN_JOURNALS_ADD where trunc(plan_date) >= to_date('01-07-2018', 'dd-mm-yyyy') and trunc(plan_date) <= to_date('31-07-2018', 'dd-mm-yyyy') AND PAYMENT_KIND_ID in 33232 ) pivot ( min (cnt) FOR id IN ( 'HOSP_PLAN_KIND' AS OMS, 'HOSP_PLAN_KIND' AS VMP, 'HOSP_PLAN_KIND' AS FED) ) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.07.2018, 13:20 |
|
||
|
Как оптимизировать громоздкий запрос sql ?
|
|||
|---|---|---|---|
|
#18+
Щукина Анна, не понял тут ?? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.07.2018, 13:24 |
|
||
|
Как оптимизировать громоздкий запрос sql ?
|
|||
|---|---|---|---|
|
#18+
Александер234 Как быть не знаюПредоставить удобняе для использования тестовые данные, желаемый результат на них и словесное описание сути "хотелки".... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.07.2018, 13:26 |
|
||
|
Как оптимизировать громоздкий запрос sql ?
|
|||
|---|---|---|---|
|
#18+
Щукина Анна, Щас попытаюсь объяснить как могу ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.07.2018, 13:27 |
|
||
|
Как оптимизировать громоздкий запрос sql ?
|
|||
|---|---|---|---|
|
#18+
Александер234Щукина Анна, не понял тут ?? 0) вам было предложено переписать запрос через PIVOT или его аналоги на CASE/DECODE 1) вам была дана ссылка на описание того, как "развернуть" результат при помощи decode 2) ваш пост был подправлен, в него было вставлено форматирование, чтобы код выглядел как код, а не как остальной текст сообщения что из этого у вас вызвало непонимание ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.07.2018, 13:28 |
|
||
|
Как оптимизировать громоздкий запрос sql ?
|
|||
|---|---|---|---|
|
#18+
прощай, индекс Код: plsql 1. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.07.2018, 13:28 |
|
||
|
Как оптимизировать громоздкий запрос sql ?
|
|||
|---|---|---|---|
|
#18+
Щукина Анна, 2) пункт был не понятен ,теперь пояснили спс. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.07.2018, 13:29 |
|
||
|
Как оптимизировать громоздкий запрос sql ?
|
|||
|---|---|---|---|
|
#18+
andreymxпрощай, индекс Код: plsql 1. и так - 10 раз подряд :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.07.2018, 13:30 |
|
||
|
Как оптимизировать громоздкий запрос sql ?
|
|||
|---|---|---|---|
|
#18+
Щукина Анна, Начинайте по кусочкам 1. Вот это вложенное убожество Код: plsql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. превратите вот в такое например: Код: plsql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.07.2018, 13:36 |
|
||
|
Как оптимизировать громоздкий запрос sql ?
|
|||
|---|---|---|---|
|
#18+
MaximaXXL, будьте, пожалуйста, внимательнее, когда отвечаете адресно. Я - не ТС, мне можно не отвечать ;) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.07.2018, 13:39 |
|
||
|
Как оптимизировать громоздкий запрос sql ?
|
|||
|---|---|---|---|
|
#18+
Друзья спокойствие только спокойствие ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.07.2018, 13:48 |
|
||
|
Как оптимизировать громоздкий запрос sql ?
|
|||
|---|---|---|---|
|
#18+
MaximaXXL, На счет этого убожества полностью с вами согласен, писал его не я и поэтому попросил помощи, чтобы из этого убожества сделать конфетку. ((SELECT NULL FROM DUAL) ||'['|| (SELECT COUNT (*) FROM D_V_HPK_PLAN_JOURNALS_ADD WHERE trunc(PLAN_DATE)=trunc(t1.DDATES) AND PAYMENT_KIND_ID in (20319110, 24439460, 21178087, 33232, 33233)) ||']'|| (SELECT COUNT(*) FROM D_V_HPK_PLAN_JOURNALS_ADD WHERE trunc(PLAN_DATE)=trunc(t1.DDATES) AND PAYMENT_KIND_ID=20319110 AND nvl(HOSP_HISTORY_DS,0) = 0 ) ||'/'||(SELECT COUNT(*) FROM D_V_HPK_PLAN_JOURNALS_ADD WHERE trunc(PLAN_DATE)=trunc(t1.DDATES) AND PAYMENT_KIND_ID=24439460 AND nvl(HOSP_HISTORY_DS,0) = 0 ) ||'/'||(SELECT COUNT(*) FROM D_V_HPK_PLAN_JOURNALS_ADD WHERE trunc(PLAN_DATE)=trunc(t1.DDATES) AND PAYMENT_KIND_ID=21178087 AND nvl(HOSP_HISTORY_DS,0) = 0 ) ||'/'||(SELECT COUNT(*) FROM D_V_HPK_PLAN_JOURNALS_ADD WHERE trunc(PLAN_DATE)=trunc(t1.DDATES) AND PAYMENT_KIND_ID=33232 AND nvl(HOSP_HISTORY_DS,0) = 0 ) ||'/'||(SELECT COUNT(*) FROM D_V_HPK_PLAN_JOURNALS_ADD WHERE trunc(PLAN_DATE)=trunc(t1.DDATES) AND PAYMENT_KIND_ID=33233 AND nvl(HOSP_HISTORY_DS,0) = 0 )) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.07.2018, 13:51 |
|
||
|
Как оптимизировать громоздкий запрос sql ?
|
|||
|---|---|---|---|
|
#18+
Ой опять не выделил запрос. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.07.2018, 13:51 |
|
||
|
Как оптимизировать громоздкий запрос sql ?
|
|||
|---|---|---|---|
|
#18+
Щукина Анна - извините если чем обидел Александер234, Переписать 2-ю часть: Код: plsql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. на Код: plsql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. Заметить ошибку или странность кода - выделенно красным ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.07.2018, 13:56 |
|
||
|
Как оптимизировать громоздкий запрос sql ?
|
|||
|---|---|---|---|
|
#18+
Александер234, Далее подумать про индексы, как отмечалось ранее, и заменить Код: plsql 1. на Код: plsql 1. Ну и так далее, до "конфетного" вида ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.07.2018, 14:00 |
|
||
|
Как оптимизировать громоздкий запрос sql ?
|
|||
|---|---|---|---|
|
#18+
MaximaXXL, Спасибо , а то тут все умные никто по существу пример привести не мог даже. Теперь знаю в каком направлении мне двигаться. Показали хоть как избавиться от этих подзапросов долбанных. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.07.2018, 14:02 |
|
||
|
Как оптимизировать громоздкий запрос sql ?
|
|||
|---|---|---|---|
|
#18+
Александер234, Вы пока от них не избавились, и еще 2 - осталось. Но если подумаете/попробуете - все у Вас получиться. Кушайте слона по частям - легче переварить. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.07.2018, 14:05 |
|
||
|
Как оптимизировать громоздкий запрос sql ?
|
|||
|---|---|---|---|
|
#18+
MaximaXXL, МИр не без добрых людей ,а то нахватались умных слов и кидаются ими, а по существу помочь никто не может . Еще раз Спасибо. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.07.2018, 14:07 |
|
||
|
Как оптимизировать громоздкий запрос sql ?
|
|||
|---|---|---|---|
|
#18+
Александер234, 1) гляньте что выдает select * from table (cast (d_pkg_dat_tools.DATES_IN_RANGE(to_date('01-07-2018', 'dd-mm-yyyy'),to_date('31-07-2018', 'dd-mm-yyyy'),1) as D_CL_DATE)) t1 2) постройте план для одного из кусков и увидете где затык 3) 21562231 в случае наличия подходящего индекса может есть смысл убрать trunc( ..... stax ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.07.2018, 14:08 |
|
||
|
Как оптимизировать громоздкий запрос sql ?
|
|||
|---|---|---|---|
|
#18+
Stax, Выдает список дат . тут все ровно. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.07.2018, 13:55 |
|
||
|
|

start [/forum/topic.php?fid=52&msg=39672520&tid=1883677]: |
0ms |
get settings: |
9ms |
get forum list: |
18ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
209ms |
get topic data: |
8ms |
get forum data: |
2ms |
get page messages: |
76ms |
get tp. blocked users: |
1ms |
| others: | 213ms |
| total: | 544ms |

| 0 / 0 |
