|
|
|
Оптимизация запроса
|
|||
|---|---|---|---|
|
#18+
пишу вот такой вот запрос: Код: 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. План выполнения запроса прикреплён в картинке По полю copied_from#operation_id уже есть индекс, но всё равно показывает TABLE ACCESS FULL Почему так? В чем может быть тут причина? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.07.2017, 09:12 |
|
||
|
Оптимизация запроса
|
|||
|---|---|---|---|
|
#18+
RMagistr2015, Статистику давно собирали? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.07.2017, 09:24 |
|
||
|
Оптимизация запроса
|
|||
|---|---|---|---|
|
#18+
Ну, а тут where ot.is_template = 'Y' индекс есть? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.07.2017, 09:36 |
|
||
|
Оптимизация запроса
|
|||
|---|---|---|---|
|
#18+
left join (...)Ну, а тут where ot.is_template = 'Y' индекс есть? Да, проглядел, признаю, вот результаты после добавления нового индекса Возможно ли их ещё как-то улучшить? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.07.2017, 09:40 |
|
||
|
Оптимизация запроса
|
|||
|---|---|---|---|
|
#18+
Для полного счастья должно быть, как минимум, 3 индекса по полям: copied_from#operation_id operation_id is_template ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.07.2017, 10:02 |
|
||
|
Оптимизация запроса
|
|||
|---|---|---|---|
|
#18+
left join (...)Для полного счастья должно быть, как минимум, 3 индекса по полям: А для счастья абсолютного - по индексу на каждое поле таблицы в отдельности и на каждое сочетание. Да? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.07.2017, 10:06 |
|
||
|
Оптимизация запроса
|
|||
|---|---|---|---|
|
#18+
andrey_anonymousleft join (...)Для полного счастья должно быть, как минимум, 3 индекса по полям: А для счастья абсолютного - по индексу на каждое поле таблицы в отдельности и на каждое сочетание. Да? Не ну это же не справочник )))) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.07.2017, 10:41 |
|
||
|
Оптимизация запроса
|
|||
|---|---|---|---|
|
#18+
left join (...)Для полного счастья должно быть, как минимум, 3 индекса по полям: copied_from#operation_id operation_id is_template Первый TABLE ACCESS FULL меня смущает, можно ли как-то от него избавиться? )) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.07.2017, 10:42 |
|
||
|
Оптимизация запроса
|
|||
|---|---|---|---|
|
#18+
RMagistr2015, покажи план через explain plan c filter/access predicates ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.07.2017, 10:51 |
|
||
|
Оптимизация запроса
|
|||
|---|---|---|---|
|
#18+
RMagistr2015 прежде чем избавляться от фулл скана подумай сколько это будет стоить? Одноблочное и многоблочное чтение не зря придумано. Это не считая расходов на вставку при наличии индексов. По твоему вопросу какой % в operation данных у которых o.copied_from#operation_id is not null? Отсюда и ответ будет. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.07.2017, 10:53 |
|
||
|
Оптимизация запроса
|
|||
|---|---|---|---|
|
#18+
Pavel_PVRMagistr2015 прежде чем избавляться от фулл скана подумай сколько это будет стоить? Одноблочное и многоблочное чтение не зря придумано. Это не считая расходов на вставку при наличии индексов. По твоему вопросу какой % в operation данных у которых o.copied_from#operation_id is not null? Отсюда и ответ будет. 25% ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.07.2017, 11:06 |
|
||
|
Оптимизация запроса
|
|||
|---|---|---|---|
|
#18+
RMagistr2015Pavel_PVRMagistr2015 прежде чем избавляться от фулл скана подумай сколько это будет стоить? Одноблочное и многоблочное чтение не зря придумано. Это не считая расходов на вставку при наличии индексов. По твоему вопросу какой % в operation данных у которых o.copied_from#operation_id is not null? Отсюда и ответ будет. 25% 25>7 => FTS ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.07.2017, 11:09 |
|
||
|
Оптимизация запроса
|
|||
|---|---|---|---|
|
#18+
RMagistr2015, Странно или я чтот не понял или если данные есть в t таблице а у нее is_template = 'Y' то Код: plsql 1. 2. 3. 4. 5. 6. 7. 8. будет срабатывать всегда верхний и на выходе будет 1 и как следствие его вообще можно убрать написав простенький decode на 1 поле, т.е. нашел данные или нет. t.copied_from#operation_id - а не просветите по поводу знака '#' а то както раньше не всречал ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.07.2017, 14:36 |
|
||
|
Оптимизация запроса
|
|||
|---|---|---|---|
|
#18+
RMagistr2015, Ок, кажется понял, copied_from#operation_id - просто спицефическое имя поля. А не подскажите еще может ли быть к одному значению o.copied_from#operation_id несколько записей с таким t.operation_id в таблице from operation ot where ot.is_template = 'Y') t или это связь всегда 1 к 1 и может ли быть 1 к 0? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.07.2017, 15:33 |
|
||
|
Оптимизация запроса
|
|||
|---|---|---|---|
|
#18+
MaximaXXLRMagistr2015, Ок, кажется понял, copied_from#operation_id - просто спицефическое имя поля. А не подскажите еще может ли быть к одному значению o.copied_from#operation_id несколько записей с таким t.operation_id в таблице from operation ot where ot.is_template = 'Y') t или это связь всегда 1 к 1 и может ли быть 1 к 0? Тут таблица соединяется сама с собой, для отоброжения дочерних связей, для одного operation_id может бфть много copied_from#operation_id, и условия разные, может быть как is_tempalte = 'Y' так и is_template = 'N' and t.schedule_specifier in ('O','P') Блин, тело подзапроса привел неправильно, вот его нормальный вид: Код: 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. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.07.2017, 07:36 |
|
||
|
Оптимизация запроса
|
|||
|---|---|---|---|
|
#18+
RMagistr2015 Код: plsql 1. 2. 3. И что, работает? ...зачем вообще это самосоединение надо? Аналитикой/иерархическим запросом/pattern matching не решается? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.07.2017, 10:15 |
|
||
|
Оптимизация запроса
|
|||
|---|---|---|---|
|
#18+
Пузырь-волшебникRMagistr2015 Код: plsql 1. 2. 3. И что, работает? ...зачем вообще это самосоединение надо? Аналитикой/иерархическим запросом/pattern matching не решается? Например? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.07.2017, 12:03 |
|
||
|
Оптимизация запроса
|
|||
|---|---|---|---|
|
#18+
RMagistr2015, Пример Код: plsql 1. 2. 3. 4. 5. 6. 7. no data found Никак не работает ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.07.2017, 12:34 |
|
||
|
Оптимизация запроса
|
|||
|---|---|---|---|
|
#18+
MaximaXXLRMagistr2015, Пример Код: plsql 1. 2. 3. 4. 5. 6. 7. no data found Никак не работает Простите, не совсем ясно что вы хотите сказать ) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.07.2017, 12:38 |
|
||
|
Оптимизация запроса
|
|||
|---|---|---|---|
|
#18+
RMagistr2015, Код: plsql 1. 2. 3. 4. 5. 6. 7. не может поле is_template быть в 2-х состояниях одновременно для одной строки. А это значит там стоит или "or" или этот селект ничего не вернет в 100% случаев ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.07.2017, 12:45 |
|
||
|
Оптимизация запроса
|
|||
|---|---|---|---|
|
#18+
MaximaXXLRMagistr2015, Код: plsql 1. 2. 3. 4. 5. 6. 7. не может поле is_template быть в 2-х состояниях одновременно для одной строки. А это значит там стоит или "or" или этот селект ничего не вернет в 100% случаев Да, вы правы, там стоит OR, пойду попью кофе ((( ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.07.2017, 12:48 |
|
||
|
Оптимизация запроса
|
|||
|---|---|---|---|
|
#18+
RMagistr2015там стоит OR, пойду попью кофе ((( Кофе - это хорошо. Но еще лучше показать, как именно "там стоит OR". ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.07.2017, 13:01 |
|
||
|
Оптимизация запроса
|
|||
|---|---|---|---|
|
#18+
ЗапузыримRMagistr2015там стоит OR, пойду попью кофе ((( Кофе - это хорошо. Но еще лучше показать, как именно "там стоит OR". Код: 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. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.07.2017, 13:05 |
|
||
|
Оптимизация запроса
|
|||
|---|---|---|---|
|
#18+
Странная ошибка появилась при выполнении этого запроса. Он находится у меня в пакете в процедуре, и при вызове этой процедуры, происходит ошибка, типо нет такого пакета, хотя этого пакета среди невалидных нет. А при перекомпиляции этого пакета выходит следующее сообщение (приведено в скриншоте): ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.07.2017, 13:16 |
|
||
|
Оптимизация запроса
|
|||
|---|---|---|---|
|
#18+
RMagistr2015, а это условие недокопироно? Код: plsql 1. или его нет/не было вообще? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.07.2017, 13:26 |
|
||
|
Оптимизация запроса
|
|||
|---|---|---|---|
|
#18+
MaximaXXLRMagistr2015, а это условие недокопироно? Код: plsql 1. или его нет/не было вообще? Это проверочное усовие, не обязательно, можно с ним можно буз него в рамках нашей дискуссии ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.07.2017, 13:27 |
|
||
|
Оптимизация запроса
|
|||
|---|---|---|---|
|
#18+
пляски с паетом продолжаются ((( пишу вот такой код: Код: plsql 1. 2. 3. 4. 5. 6. Он мне говорит, что мол - Невозможно найти вызываемый блок программы WH$S.InOper! Хотя сам пакет есть, и процедура в нем то же есть, только вот при компиляции этого пакета выходит выше обозначенное окно, что это такое и почему это происходит? (((( Пол дня уже ушатал на эту фигню (((((((((((((((( ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.07.2017, 13:31 |
|
||
|
Оптимизация запроса
|
|||
|---|---|---|---|
|
#18+
RMagistr2015, Права напрямую? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.07.2017, 13:38 |
|
||
|
Оптимизация запроса
|
|||
|---|---|---|---|
|
#18+
AlexFF__|RMagistr2015, Права напрямую? Что права на прямую? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.07.2017, 13:39 |
|
||
|
Оптимизация запроса
|
|||
|---|---|---|---|
|
#18+
RMagistr2015, Права на выполнение WH$S даны схеме пакета напрямую, не через роль? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.07.2017, 13:42 |
|
||
|
Оптимизация запроса
|
|||
|---|---|---|---|
|
#18+
AlexFF__|RMagistr2015, Права на выполнение WH$S даны схеме пакета напрямую, не через роль? Не знаю, а как это можно посмотреть? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.07.2017, 13:43 |
|
||
|
Оптимизация запроса
|
|||
|---|---|---|---|
|
#18+
AlexFF__|RMagistr2015, Права на выполнение WH$S даны схеме пакета напрямую, не через роль? Выполнил вот такой вот запрос - Код: plsql 1. 2. 3. Тут показывает две стоки, в одной этот объект valid, в другой invalid ((( ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.07.2017, 13:47 |
|
||
|
Оптимизация запроса
|
|||
|---|---|---|---|
|
#18+
RMagistr2015AlexFF__|RMagistr2015, Права на выполнение WH$S даны схеме пакета напрямую, не через роль? Выполнил вот такой вот запрос - Код: plsql 1. 2. 3. Тут показывает две стоки, в одной этот объект valid, в другой invalid ((( Причем у этих объектов одинаковое имя, но разные ID (((( ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.07.2017, 13:47 |
|
||
|
Оптимизация запроса
|
|||
|---|---|---|---|
|
#18+
RMagistr2015RMagistr2015пропущено... Выполнил вот такой вот запрос - Код: plsql 1. 2. 3. Тут показывает две стоки, в одной этот объект valid, в другой invalid ((( Причем у этих объектов одинаковое имя, но разные ID (((( Так у него говоит тело invalid, но при компиляции выдает только окно, которое я описывал выше (((( Не понятно почему так и что это за окно, и какая там ошибка ((((( ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.07.2017, 13:51 |
|
||
|
Оптимизация запроса
|
|||
|---|---|---|---|
|
#18+
RMagistr2015и что это за окно, и какая там ошибка (((((Вот так и остаются инвалидами гуя. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.07.2017, 14:01 |
|
||
|
Оптимизация запроса
|
|||
|---|---|---|---|
|
#18+
RMagistr2015при компиляции выдает только окно, которое я описывал выше (((( Не понятно почему так и что это за окно, и какая там ошибка ((((( Это окно ошибки поиска в документации описания ошибки ORA-04052. Не надо тупо давить на "ОК" когда вылетает приглашение поискать описание кода в локальной доке, которую предварительно поленился поставить. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.07.2017, 14:07 |
|
||
|
Оптимизация запроса
|
|||
|---|---|---|---|
|
#18+
Опузыреть можноRMagistr2015при компиляции выдает только окно, которое я описывал выше (((( Не понятно почему так и что это за окно, и какая там ошибка ((((( Это окно ошибки поиска в документации описания ошибки ORA-04052. Не надо тупо давить на "ОК" когда вылетает приглашение поискать описание кода в локальной доке, которую предварительно поленился поставить. Спасибо большое, я уже понял это, Спасибо Вам большое )) У меня нет прав что бы её туда ставить ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.07.2017, 14:17 |
|
||
|
Оптимизация запроса
|
|||
|---|---|---|---|
|
#18+
RMagistr2015, Итого имеем Код: 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. На таблицу operation o не накладываеться ни одного условия -> Full Scan На таблицу operation ot накладываеться одно вразумительное условие o.copied_from#operation_id=t.operation_id -> Index unique scan По факту все красиво, остальные ускорения без данных делать сложно, т.к. не очевиден выйгрыш ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.07.2017, 21:04 |
|
||
|
Оптимизация запроса
|
|||
|---|---|---|---|
|
#18+
MaximaXXLRMagistr2015, Итого имеем Код: 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. На таблицу operation o не накладываеться ни одного условия -> Full Scan На таблицу operation ot накладываеться одно вразумительное условие o.copied_from#operation_id=t.operation_id -> Index unique scan По факту все красиво, остальные ускорения без данных делать сложно, т.к. не очевиден выйгрыш Почему только одно ВРазумительное условие? ))) И как можно анализировать данные? )) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.07.2017, 07:45 |
|
||
|
|

start [/forum/topic.php?all=1&fid=52&tid=1885628]: |
0ms |
get settings: |
9ms |
get forum list: |
16ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
163ms |
get topic data: |
10ms |
get forum data: |
3ms |
get page messages: |
88ms |
get tp. blocked users: |
1ms |
| others: | 236ms |
| total: | 532ms |

| 0 / 0 |
