|
|
|
Оптимизация скрипта
|
|||
|---|---|---|---|
|
#18+
Недавно работаю с SQL и после написания скрипта возникла проблема, слишком долгое выполнение, страница ASP не успевает выполнить хранимую процедуру. Собственно прошу помощи с оптимизацией. Код: 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. 125. 126. 127. 128. 129. 130. 131. 132. 133. 134. 135. 136. 137. 138. 139. 140. 141. 142. 143. 144. 145. 146. 147. 148. 149. 150. 151. 152. 153. 154. 155. 156. 157. 158. 159. 160. 161. 162. 163. 164. 165. 166. 167. 168. 169. 170. 171. 172. 173. 174. 175. 176. 177. 178. 179. 180. 181. 182. 183. 184. 185. 186. 187. 188. 189. 190. 191. 192. 193. 194. 195. 196. 197. 198. 199. 200. 201. 202. 203. 204. 205. 206. 207. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.12.2017, 10:00:42 |
|
||
|
Оптимизация скрипта
|
|||
|---|---|---|---|
|
#18+
Николай.Л, ИМХО, у Вас слишком много императивного кода => либо переписать без курсора, либо вытащить расчет на сервер приложений ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.12.2017, 10:33:45 |
|
||
|
Оптимизация скрипта
|
|||
|---|---|---|---|
|
#18+
Николай.ЛНедавно работаю с SQL и после написания скрипта возникла проблема, слишком долгое выполнение, страница ASP не успевает выполнить хранимую процедуру. Собственно прошу помощи с оптимизацией.Ну, во первых, надо переписать скрипт в виде одного запроса, выкинуть эти циклы. Потом смотреть план этого запроса, и создать необходимые индексы. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.12.2017, 10:35:04 |
|
||
|
Оптимизация скрипта
|
|||
|---|---|---|---|
|
#18+
iiyamaНиколай.Л, ИМХО, у Вас слишком много императивного кода => либо переписать без курсора, либо вытащить расчет на сервер приложенийДа вроде простая логика, не вижу каких то проблем с переписыванием без курсора. Единственно, там по GHH делается агрегирование, так что может быть и не очень быстро (впрочем, без понимания данных и бизнес логики прогнозировать трудно). ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.12.2017, 10:37:23 |
|
||
|
Оптимизация скрипта
|
|||
|---|---|---|---|
|
#18+
Николай.Л, хардкодненько :) Код: sql 1. враг не пройдёт (id<>233) and (id<>234) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.12.2017, 10:48:48 |
|
||
|
Оптимизация скрипта
|
|||
|---|---|---|---|
|
#18+
TaPaKНиколай.Л, хардкодненько :) Код: sql 1. враг не пройдёт (id<>233) and (id<>234)Ну это на всякий случай, вдруг из за очередного бага мелкософта сервер неточно проверит первые условия? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.12.2017, 10:54:13 |
|
||
|
Оптимизация скрипта
|
|||
|---|---|---|---|
|
#18+
alexeyvgTaPaKНиколай.Л, хардкодненько :) Код: sql 1. враг не пройдёт (id<>233) and (id<>234)Ну это на всякий случай, вдруг из за очередного бага мелкософта сервер неточно проверит первые условия?Там в коде много таких мест, надёжно сделано, с запасом. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.12.2017, 10:54:47 |
|
||
|
Оптимизация скрипта
|
|||
|---|---|---|---|
|
#18+
alexeyvg, там в плоть до 244 id просто это я сделал поменьше пока. не подскажешь примерно как будет выглядеть без курсора? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.12.2017, 11:06:49 |
|
||
|
Оптимизация скрипта
|
|||
|---|---|---|---|
|
#18+
Николай.Лalexeyvg, там в плоть до 244 id просто это я сделал поменьше пока. не подскажешь примерно как будет выглядеть без курсора?Ну, просто раскрывайте постепенно вычисления. У вас главная таблица Devices, и вы выбираете 3 поля из Devices, соответсвенно, начинайте запрос из этой таблицы (сразу проставляйте алиасы, что бы не запутаться): Код: sql 1. 2. 3. 4. Далее, эту таблицу вы выводите как есть, с подсчётом Smena1,Smena2 Соответственно, считаете Smena1,Smena2: Код: sql 1. 2. 3. 4. 5. 6. 7. Потом прибавляете UNION ALL вторую часть, которая "подсчет строчки Итого" Правда, у вас строчек "Итого" по одной на каждый Devices.id, но тут уж я вашу логику разбирать не буду, сами смотрите. Причём это у вас нарастающий итог, но вычисленный неправильно, исходит из предположения, что ИД записей отличаются на 1 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.12.2017, 11:29:53 |
|
||
|
|

start [/forum/topic.php?fid=46&msg=39569485&tid=1690677]: |
0ms |
get settings: |
11ms |
get forum list: |
17ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
203ms |
get topic data: |
13ms |
get forum data: |
3ms |
get page messages: |
66ms |
get tp. blocked users: |
1ms |
| others: | 228ms |
| total: | 548ms |

| 0 / 0 |
