|
|
|
Оптимизация запроса
|
|||
|---|---|---|---|
|
#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 |
|
||
|
|

start [/forum/topic.php?fid=52&msg=39484237&tid=1885628]: |
0ms |
get settings: |
4ms |
get forum list: |
16ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
60ms |
get topic data: |
9ms |
get forum data: |
3ms |
get page messages: |
79ms |
get tp. blocked users: |
1ms |
| others: | 207ms |
| total: | 385ms |

| 0 / 0 |
