|
Ещё раз о планах выполнения
|
|||
---|---|---|---|
#18+
Доброго времени суток! Нормально ли, что один и тот же запрос выполняется напрямую по одному плану: Код: plaintext 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. 50. 51.
, а из процедуры по другому: Код: plaintext 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.
? Может в суппорт обратиться... P.S. В данном случае эксперимент проводился на 11.50.UC7W1 под Linux. ... |
|||
:
Нравится:
Не нравится:
|
|||
26.04.2012, 16:34 |
|
Ещё раз о планах выполнения
|
|||
---|---|---|---|
#18+
и где в первом : ((upper(preces.precnos) like trim(UPPER('')) || '%') or ('' is null) or ('' = '')) ??? ... |
|||
:
Нравится:
Не нравится:
|
|||
26.04.2012, 16:52 |
|
Ещё раз о планах выполнения
|
|||
---|---|---|---|
#18+
точнее во втором ... |
|||
:
Нравится:
Не нравится:
|
|||
26.04.2012, 16:55 |
|
Ещё раз о планах выполнения
|
|||
---|---|---|---|
#18+
автори где upper? Без понятия. Так он пишет планы. В оригинале было: Код: plsql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18.
То есть, если выделяю от insert до ; - план первый, если execute procedure - второй... ... |
|||
:
Нравится:
Не нравится:
|
|||
26.04.2012, 17:11 |
|
Ещё раз о планах выполнения
|
|||
---|---|---|---|
#18+
Журавлев Дениси где ((upper(preces.precnos) like trim(UPPER('')) || '%') or ('' is null) or ('' = '')) А, ну наверное оптимизатор исключил это условие из рассмотрения, потому что оно всегда даёт true. ... |
|||
:
Нравится:
Не нравится:
|
|||
27.04.2012, 12:38 |
|
Ещё раз о планах выполнения
|
|||
---|---|---|---|
#18+
Leonid Vorontsov? Может в суппорт обратиться... Обратиться можно. И забыть, пока не поправят. А самим добиться желаемого результата другими методами - вплоть до указания индекса (если уж у вас запросы в процедурах с такими жёсткими константами живут :) ). ... |
|||
:
Нравится:
Не нравится:
|
|||
27.04.2012, 15:54 |
|
Ещё раз о планах выполнения
|
|||
---|---|---|---|
#18+
Ага, значит, всё-таки подтверждается, что это - глюк? Хорошо... Нет, конечно, константы я дал для наглядности, на самом деле там переменные. Но вот не получается у меня добиться нужного результата - указал я ему, какой индекс использовать - но вместо ожидаемого Lower Index Filter увидел в плане Index Key Filters. Получше, конечно, стало, но всё равно недостаточно, статистика подтверждает: Код: plaintext 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. 50. 51. 52.
И что делать? ... |
|||
:
Нравится:
Не нравится:
|
|||
28.04.2012, 15:06 |
|
Ещё раз о планах выполнения
|
|||
---|---|---|---|
#18+
Leonid VorontsovАга, значит, всё-таки подтверждается, что это - глюк? Хорошо... Если "подтверждается" - это в смысле, что сугубо мои знания, опыт, степень понимания логики работы Informix и т.д. и т.п. тоже не помогли выявить к чему придраться в твоей постановке вопроса - то да, "подтверждается" :). А во втором запросе ты "махлюешь": 1) мало того, что форматирование отдал нам без особого уважения, 2) так ещё и внешний вид условия поменял: было в 1-ом случае: Код: sql 1.
во 2-ом Код: sql 1.
Вывод: если вы в ХП используете входной параметр p_vad_numurs, сделайте в ХП поиск не Код: sql 1.
а Код: sql 1. 2. 3. 4.
... |
|||
:
Нравится:
Не нравится:
|
|||
28.04.2012, 16:33 |
|
Ещё раз о планах выполнения
|
|||
---|---|---|---|
#18+
И оптимизатор сообразит, что перед ним не выражение, в котором нужно разбираться (а значит сложнее реализовать оптимизатор), а константа, с маскировочными символами в конце... ... |
|||
:
Нравится:
Не нравится:
|
|||
28.04.2012, 16:39 |
|
Ещё раз о планах выполнения
|
|||
---|---|---|---|
#18+
Leonid Vorontsov, именно из-за переменных оптимизатор зачастую и глючит. Я стараюсь в таких случаях переписать запрос на несколько более простых. В некоторых случаях помогает запихать значения переменных во временную таблицу и использовать потом ее. ... |
|||
:
Нравится:
Не нравится:
|
|||
03.05.2012, 09:24 |
|
|
start [/forum/topic.php?fid=44&msg=37779906&tid=1607174]: |
0ms |
get settings: |
17ms |
get forum list: |
5ms |
check forum access: |
1ms |
check topic access: |
1ms |
track hit: |
94ms |
get topic data: |
2ms |
get forum data: |
1ms |
get page messages: |
282ms |
get tp. blocked users: |
1ms |
others: | 299ms |
total: | 703ms |
0 / 0 |