|
|
|
Прошу помощи с индексами и запросом
|
|||
|---|---|---|---|
|
#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. 29. 30. 31. 32. 33. 34. 35. 36. 37. 38. 39. 40. 41. 42. 43. 44. 45. 46. 47. 48. Из за конструкции Код: plsql 1. 2. 3. идет full scan Индексы: Код: 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. не помогают. Если в запросе и индексах убрать upper, то всё огонь. Но из приложения upper никак не выковырять. Что можно придумать? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.01.2018, 11:01 |
|
||
|
Прошу помощи с индексами и запросом
|
|||
|---|---|---|---|
|
#18+
lYY, версия сервера ? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.01.2018, 11:07 |
|
||
|
Прошу помощи с индексами и запросом
|
|||
|---|---|---|---|
|
#18+
10g на винде ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.01.2018, 11:17 |
|
||
|
Прошу помощи с индексами и запросом
|
|||
|---|---|---|---|
|
#18+
lYY, Какой-то странный like. Должно быть не like upper('00000005935'), а like upper('%00000005935%') ? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.01.2018, 12:57 |
|
||
|
Прошу помощи с индексами и запросом
|
|||
|---|---|---|---|
|
#18+
Alexander_Ttllike upper('%00000005935%')тогда FULL SCAN будет всегда вне зависимости от индекса ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.01.2018, 13:09 |
|
||
|
Прошу помощи с индексами и запросом
|
|||
|---|---|---|---|
|
#18+
lYY, А какой тип у полей shipment_nr и saledoc_nr ? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.01.2018, 13:10 |
|
||
|
Прошу помощи с индексами и запросом
|
|||
|---|---|---|---|
|
#18+
шК0ДЕРAlexander_Ttllike upper('%00000005935%')тогда FULL SCAN будет всегда вне зависимости от индекса а так проще поставить знак "=" =upper('00000005935') или это фича какая-то? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.01.2018, 13:16 |
|
||
|
Прошу помощи с индексами и запросом
|
|||
|---|---|---|---|
|
#18+
lYYИндексы: Код: 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.01.2018, 13:16 |
|
||
|
Прошу помощи с индексами и запросом
|
|||
|---|---|---|---|
|
#18+
Alexander_Ttlа так проще поставить знак "=" =upper('00000005935') или это фича какая-то?Не исключено :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.01.2018, 13:20 |
|
||
|
Прошу помощи с индексами и запросом
|
|||
|---|---|---|---|
|
#18+
Брать upper от цифр и like без процентов/подчеркиваний - абсурд. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.01.2018, 13:21 |
|
||
|
Прошу помощи с индексами и запросом
|
|||
|---|---|---|---|
|
#18+
lYY, а если убрать "or upper(h.saledoc_nr) like upper('00000005935')" индекс подхватывается ? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.01.2018, 13:22 |
|
||
|
Прошу помощи с индексами и запросом
|
|||
|---|---|---|---|
|
#18+
AmKadБрать upper от цифр и like без процентов/подчеркиваний - абсурд. Согласен, я поэтому и спросил про "%". Полагаю, TC считает, что если слева от like есть upper, то и справа должен быть. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.01.2018, 13:27 |
|
||
|
Прошу помощи с индексами и запросом
|
|||
|---|---|---|---|
|
#18+
AmKadБрать upper от цифр и like без процентов/подчеркиваний - абсурд.lYYНо из приложения upper никак не выковырять.Да тут и так все понятно, если уж запрос на клиенте находится ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.01.2018, 13:28 |
|
||
|
Прошу помощи с индексами и запросом
|
|||
|---|---|---|---|
|
#18+
Alexander_TtllYY, а если убрать "or upper(h.saledoc_nr) like upper('00000005935')" индекс подхватывается ? да ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.01.2018, 14:17 |
|
||
|
Прошу помощи с индексами и запросом
|
|||
|---|---|---|---|
|
#18+
Alexander_TtlшК0ДЕРпропущено... тогда FULL SCAN будет всегда вне зависимости от индекса а так проще поставить знак "=" =upper('00000005935') или это фича какая-то? я не писал, я админ, я индекс могу создать или удалить) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.01.2018, 14:18 |
|
||
|
Прошу помощи с индексами и запросом
|
|||
|---|---|---|---|
|
#18+
AlexFF__|Ты после создания индексов пересобрал статистику по таблице ? собрал, не помогло. Написал, в общем, разработчикам. Пусть переделывают. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.01.2018, 14:36 |
|
||
|
Прошу помощи с индексами и запросом
|
|||
|---|---|---|---|
|
#18+
lYYAlexander_TtllYY, а если убрать "or upper(h.saledoc_nr) like upper('00000005935')" индекс подхватывается ? да То есть, индекс, в принципе, работает. Похоже, оптимизатор считает, что один раз просканировать всю таблицу дешевле, чем пройтись по двум разным индексам от начала и до конца, а потом еще выбрать необходимые данные из таблицы. Использование like вместо равенства не позволяет задействовать index range scan. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.01.2018, 17:29 |
|
||
|
Прошу помощи с индексами и запросом
|
|||
|---|---|---|---|
|
#18+
lYY, что показывает запрос: Код: plsql 1. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.01.2018, 17:36 |
|
||
|
Прошу помощи с индексами и запросом
|
|||
|---|---|---|---|
|
#18+
Alexander_TtllYYпропущено... да Использование like вместо равенства не позволяет задействовать index range scan. По-моему если в префиксе нет спецсимволов, оптимизатор отлично умеет в ранж скан по лайку. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.01.2018, 17:37 |
|
||
|
Прошу помощи с индексами и запросом
|
|||
|---|---|---|---|
|
#18+
Valergrad, ты прав. Но что-то я засомневался, что с функциональными индексами такое проходит. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.01.2018, 17:41 |
|
||
|
Прошу помощи с индексами и запросом
|
|||
|---|---|---|---|
|
#18+
Собственно что тут гадать? Посмотрите сначала подхватывает ли он индекс в простейшем варианте - Код: plsql 1. Если не подхватывает - то нужно выяснять почему и в чем проблема с индексом. Если подхватывает - то значит оптимизатор просто рассчитал для сложного запроса что ему будет быстрей фулл-сканом чем по двум индексам джойнить и создавать. Здесь я бы начал с просмотра плана запроса. Можно дописать принудительно хинты на использование индексов и index_combine и сравнить cost с исходной - действительно ли она больше, если да - то почему. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.01.2018, 17:43 |
|
||
|
Прошу помощи с индексами и запросом
|
|||
|---|---|---|---|
|
#18+
lYYЕсли в запросе и индексах убрать upper, то всё огонь. Интересно бы посмотреть план с upper и без. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.01.2018, 17:48 |
|
||
|
Прошу помощи с индексами и запросом
|
|||
|---|---|---|---|
|
#18+
ValergradСобственно что тут гадать? Посмотрите сначала подхватывает ли он индекс в простейшем варианте - Код: plsql 1. так вроде ответили про это уже 21141780 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.01.2018, 17:51 |
|
||
|
Прошу помощи с индексами и запросом
|
|||
|---|---|---|---|
|
#18+
можете сюда выложить планы через dbms_xplan четырех запросов: Код: plsql 1. 2. 3. 4. 5. 6. 7. 8. 9. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.01.2018, 17:52 |
|
||
|
Прошу помощи с индексами и запросом
|
|||
|---|---|---|---|
|
#18+
Простите, не на работе уже) Я понимаю, что надо над приложением работать. Но у меня нет такой возможности. Я хотел по быстрому индекс какой нибудь прикрутить. Запрос если переписать через instr,то идёт по индексу. Написал разработчикам, будем подождать) Всем спасибо и выходных! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.01.2018, 22:28 |
|
||
|
|

start [/forum/topic.php?fid=52&msg=39591594&tid=1884525]: |
0ms |
get settings: |
7ms |
get forum list: |
13ms |
check forum access: |
2ms |
check topic access: |
2ms |
track hit: |
34ms |
get topic data: |
6ms |
get forum data: |
2ms |
get page messages: |
47ms |
get tp. blocked users: |
1ms |
| others: | 201ms |
| total: | 315ms |

| 0 / 0 |
