|
|
|
Курсоры MySQL: почему ж так медленно?
|
|||
|---|---|---|---|
|
#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. 49. 50. 51. 52. 53. 54. 55. 56. 57. 58. 59. 60. 61. 62. 63. 64. 65. 66. 67. 68. 69. 70. 71. 72. 73. 74. 75. 76. 77. 78. 79. 80. 81. 82. 83. 84. 85. 86. 87. 88. 89. 90. 91. 92. 93. 94. 95. 96. 97. 98. 99. 100. 101. 102. 103. 104. 105. 106. 107. 108. 109. 110. 111. 112. 113. 114. 115. 116. 117. 118. 119. 120. 121. 122. 123. 124. Требуется пробежаться по записям таблицы test1 и, в соответствии с определенной логикой, добавить записи в подчиненную таблицу test2. Процедура proc_fill_test2_with_cursor делает это с использованием курсора, proc_fill_test2_without_cursor - без него, но с использованием лишнего поля в test1. Обе процедуры используют одну и ту же функцию fn_fill_test2. Вторая процедура отрабатывает в несколько раз быстрее. Может я как-то неправильно создаю или использую курсор? Если же курсоры - это действительно тормоз, то можно ли обойтись без них, но и без лишних полей? Триггеры не подходят, т.к. в момент вставки в test2 никакой модификации данных в test1 не предусмотрено. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.07.2015, 14:52:52 |
|
||
|
|

start [/forum/topic.php?fid=47&gotonew=1&tid=1832900]: |
0ms |
get settings: |
8ms |
get forum list: |
14ms |
check forum access: |
2ms |
check topic access: |
2ms |
track hit: |
134ms |
get topic data: |
9ms |
get first new msg: |
7ms |
get forum data: |
3ms |
get page messages: |
30ms |
get tp. blocked users: |
1ms |
| others: | 200ms |
| total: | 410ms |

| 0 / 0 |
