|
|
|
Улучшить производительность WINDOW SORT
|
|||
|---|---|---|---|
|
#18+
Nikolay SavvinovВсе известные мне решения (а я копал на эту тему достаточно давно и долго, и даже как-то Тома Кайта доставал на какой-то конференции этим вопросом) достаточно кривые, но для каких-то конкретных случаев работают ... Как раз таки решение через index lookup, о котором говориться выше отлично справляется. booby был прав с подходом, но промазал с запросом, результата его запроса я не дождался (что и логично, ведь там еще присутствует ненужный group by, да и гарантии доступа по индексу нет). На данных и индексах photoshop'a : Код: 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. 208. 209. 210. 211. 212. 213. 214. 215. 216. 217. 218. 219. 220. 221. 222. 223. 224. 225. 226. 227. 228. 229. 230. 231. 232. 233. 234. 235. Вообщем - то 00:00:04.45 vs 00:00:02.57 vs 00:00:00.01 , Довольно очевидно. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.06.2016, 00:02 |
|
||
|
Улучшить производительность WINDOW SORT
|
|||
|---|---|---|---|
|
#18+
Николай, попробую такой комментарий на ваш пост: По части терминологии сорта "темпоральный", "битемпоральный" и "правильного решения в рамках СУБД Oracle, к сожалению, не имеет", мое скромное мнение здесь стоит так: эта опера другими словами поется. В данном конкретном случае, речь идет всего лишь об ошибке в нормализации данных, допущенной разработчиком. в задачах на получение "срезов" в любом случае возникает join. Соединение периода актуальности среза с собственно данными, относящимися к этому срезу. Там, где он реализован через самосоединение вида Код: plsql 1. 2. 3. 4. 5. 6. 7. 8. 9. он и выглядит нелепо и прямо является следствием допущенной ошибки проектирования. И, также, нет сомнения, что виноват в этом только Oracle. Поскольку позволяет невинному разработчику проектировать свои данные в эдаком стиле. Ясно, что хорошая система так поступать не будет, и вовремя наставит ... разработчика на истинный путь. Поскольку такие заходы встречаются чуть менее, чем повсеместно, простым пионэрством этого не объяснишь. Имхо, в 10 случаях из 10 это является следствием того, что никакого "первого" или "последнего" среза в первоначальном дизайне просто не было. Понимание и потребность в истории срезов пришла потом - по мере развития системы. И выбран конкретный вариант как наименее затратный в смысле количества штук изменений, вносимых а архитектуру системы для минимально работоспособной реализации. Так технический дефект заливается бетоном, превращаясь архитектуру, на примере которой следующие поколения пионэров обучаются истинно правоверному би-темпоральному проектированию, одновременно с усвоением знаний о том, чего не может Oracle. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.06.2016, 00:46 |
|
||
|
Улучшить производительность WINDOW SORT
|
|||
|---|---|---|---|
|
#18+
ora601, прошу прощения. имхо ваши изыскания целиком нерелевантны обсуждаемому случаю. здесь принципиально , что на пару (a,b) может быть возвращено произвольное количество строк, а вы исходите из предположения о том, что их не более одной. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.06.2016, 01:19 |
|
||
|
Улучшить производительность WINDOW SORT
|
|||
|---|---|---|---|
|
#18+
boobyora601, прошу прощения. имхо ваши изыскания целиком нерелевантны обсуждаемому случаю. здесь принципиально , что на пару (a,b) может быть возвращено произвольное количество строк, а вы исходите из предположения о том, что их не более одной. Нужно найти для каждой группы а , b с максимальным b. "Возвращено" (куда? ), "не более одной" (строк, пар, ? ) - какой то сплошной вакуум. Приведи пример, чтобы было более понятно о чем ты пишешь. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.06.2016, 02:24 |
|
||
|
Улучшить производительность WINDOW SORT
|
|||
|---|---|---|---|
|
#18+
ora601, TC спрашивал, как найти строки у которых b максимальный. Таких строк может быть вся таблица, а может быть ни одной, а в особо тяжком случае это еще и не вся таблица. :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.06.2016, 07:51 |
|
||
|
Улучшить производительность WINDOW SORT
|
|||
|---|---|---|---|
|
#18+
Nikolay SavvinovПо понятным причинам эти workaroundы не столько решают проблему, сколько перекладывают ее с этапа опрашивания данных в этап их сохранения или модификации. По идее, существуют темпоральные (и даже битемпоральные) СУБД в которых такие запросы должны и кодироваться легко, и выполняться влет. Простите Николай. Но первое утверждение так же справедливо. Либо раскладываешь так, чтоб было удобно искать и теряешь время на записи, либо теряешь время на чтении. Да для простых случаев можно использовать хранилища типа стек и т.п. Но это только в том случае если поиск идет по дате поступления, если же информация может поступать задним числом да еще и отменяться, то хоть так, хоть эдак надо тратить время. И хранение последнего варианта отдельно не такой уж и плохой вариант и тоже один из способов решения проблемы и вполне допустимый. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.06.2016, 08:05 |
|
||
|
Улучшить производительность WINDOW SORT
|
|||
|---|---|---|---|
|
#18+
Сергей Арсеньев, Это SCD (slowly changing dimensions) тип 4 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.06.2016, 11:47 |
|
||
|
Улучшить производительность WINDOW SORT
|
|||
|---|---|---|---|
|
#18+
xtenderЭто SCD (slowly changing dimensions) тип 4 Ну да. Забавная, кстати, классификация. Метод 4 (по сути методы 1+2), это не метод 3, но метод 6 именно 6 потому, что 1+2+3. :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.06.2016, 14:53 |
|
||
|
Улучшить производительность WINDOW SORT
|
|||
|---|---|---|---|
|
#18+
booby, Вы берете какой-то сильно оптимистический случай, когда у вас временное измерение представлено только в одной таблице. А если их несколько, а если вся схема такая? Возьмите, для конкретности, модель данных для фондового рынка. У вас есть таблица с движениями цен, таблицы, которые задают группировки объектов по каким-то более сложным структурам, вотч листы разные, портфолио конкретных трейдеров, таблицы, которые описывают самих трейдеров и т.д и т.п. И у всех этих данных есть динамическая компонента. И постоянно вам будет нужно прогонять сложные запросы с многочисленными соединениями, которые для каждой из соединяемых таблиц будут брать данные по состоянию на какой-то конкретный момент времени. Ну то есть если вы считаете какие-то риски или балансы для какого-то трейд деска на 1е сентября 2010го года, то вам нужно брать и цены на этот момент, и состояние портфолио на этот момент, и какие трейдеры куда входили на тот момент и т.д. и т.п. Вот если вам с самого начала известны требования, как вы их реализуете? Как вы все эти таблицы будете индексировать? Как секционировать, с учетом того, что достаточно быстро счет пойдет на миллиарды строк и терабайты данных? Эта задача гораздо сложнее, чем может показаться на первый взгляд. С уважением, Николай ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.06.2016, 15:16 |
|
||
|
Улучшить производительность WINDOW SORT
|
|||
|---|---|---|---|
|
#18+
Товарищи, кто-нибудь знает, есть ли разница между Код: plaintext Код: plaintext (кроме NULLS FIRST/LAST - допустим, колонка b not null) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.10.2016, 19:38 |
|
||
|
Улучшить производительность WINDOW SORT
|
|||
|---|---|---|---|
|
#18+
--Eugene--, Года два назад, разницы для not null не было ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.10.2016, 02:10 |
|
||
|
Улучшить производительность WINDOW SORT
|
|||
|---|---|---|---|
|
#18+
xtender, не сочтите за дерзость, а откуда такая информация? (что "не было") ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.10.2016, 03:15 |
|
||
|
|

start [/forum/topic.php?fid=52&gotonew=1&tid=1887219]: |
0ms |
get settings: |
9ms |
get forum list: |
15ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
194ms |
get topic data: |
8ms |
get first new msg: |
5ms |
get forum data: |
2ms |
get page messages: |
51ms |
get tp. blocked users: |
1ms |
| others: | 246ms |
| total: | 537ms |

| 0 / 0 |
