|
|
|
Медленное выполнение запроса. Хранимые процедуры.
|
|||
|---|---|---|---|
|
#18+
Всем привет. Есть связка двух хранимых процедур: Первая hran_test3() Код: plsql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. Эта процедура использует вcпомогательную процедуру getTable() Код: plsql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. Такой запрос выполняется за 70 мс. Теперь я просто беру из вспомогательной функции getTable запрос и пихаю его как подзапрос в запросе хранимки hran_test3. Получаю вот такую штуку: Код: 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. которая выполняется за 120мс. Я ожидал одинакового результата, но получил большую разницу во времени. Почему так произошло? Если подытожить, то суть в том, что вот такая Хранимая процедура: Код: plsql 1. выполняется быстрее, чем вот такая хранимка: Код: plsql 1. Они обе оформляются как хранимые процедуры т.е заранее компилируются. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.05.2016, 16:37 |
|
||
|
Медленное выполнение запроса. Хранимые процедуры.
|
|||
|---|---|---|---|
|
#18+
LBattersОни обе оформляются как хранимые процедуры т.е заранее компилируются. что значит "заранее компилируются"? ПЖ по факту всё делает, каждый раз вызывая обработчик и передавая ему текст функции. для сравнения нужно видеть планы исполнения запросов: EXPLAIN (analyze, buffers) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.05.2016, 16:50 |
|
||
|
Медленное выполнение запроса. Хранимые процедуры.
|
|||
|---|---|---|---|
|
#18+
Это hran_test4 QUERY PLAN ------------------------------------------------------------------------------------------------------------------------ Function Scan on hran_test4 t (cost=0.25..10.25 rows=1000 width=106) (actual time=118.927..119.806 rows=8254 loops=1) Planning time: 0.117 ms Execution time: 120.543 ms (3 строки) hran_test3: QUERY PLAN ---------------------------------------------------------------------------------------------------------------------- Function Scan on hran_test3 t (cost=0.25..10.25 rows=1000 width=106) (actual time=89.087..89.928 rows=8254 loops=1) Planning time: 0.077 ms Execution time: 90.596 ms (3 строки) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.05.2016, 17:01 |
|
||
|
Медленное выполнение запроса. Хранимые процедуры.
|
|||
|---|---|---|---|
|
#18+
Вот сами запросы Для hran_test3: Код: plsql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. (12 строк) Для hran_test4 Код: 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. stud = stud_fam.id_stud) Planning time: 3.180 ms ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.05.2016, 17:19 |
|
||
|
|

start [/forum/topic.php?fid=53&tid=1997233]: |
0ms |
get settings: |
10ms |
get forum list: |
18ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
177ms |
get topic data: |
11ms |
get forum data: |
3ms |
get page messages: |
56ms |
get tp. blocked users: |
1ms |
| others: | 225ms |
| total: | 509ms |

| 0 / 0 |
