|
Hybrid Histograms
|
|||
---|---|---|---|
#18+
Оракл преподносит их как лучшее из двух миров https://docs.oracle.com/en/database/oracle/oracle-database/19/tgsql/histograms.html#GUID-59C57EDF-E763-436A-9CB2-B59A536A10F7A hybrid histogram combines characteristics of both height-based histograms and frequency histograms. This "best of both worlds" approach enables the optimizer to obtain better selectivity estimates in some situations. The height-based histogram sometimes produces inaccurate estimates for values that are almost popular. For example, a value that occurs as an endpoint value of only one bucket but almost occupies two buckets is not considered popular. To solve this problem, a hybrid histogram distributes values so that no value occupies more than one bucket, and then stores the endpoint repeat count value, which is the number of times the endpoint value is repeated, for each endpoint (bucket) in the histogram. By using the repeat count, the optimizer can obtain accurate estimates for almost popular values. Но на мой взгляд концепция (или текущая реализация?) какая-то недоделанная. Ок, endpoint repeat count это хорошо и избегание размазывания супер популярных значений по нескольким бакетам имеет смысл. Совершенно непонятно зачем Оракл засовывает в бакеты гибридной по одному значению чтоб потом в последний бакет засунуть "всё подряд". Соответственно полное фиско с estimate для 1111. Таблица Код: plsql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14.
Тест Код: plsql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11.
Результат Код: plsql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21.
Если вдруг кому интересно посмотреть на гистограммы Код: plsql 1. 2. 3. 4. 5.
В этом конкретном случае можно вывернуться через Top Frequency ибо число очень популярных значений меньше числа бакетов. Но если вернуться к гибридным, мне кажется для N бакетов можно было бы выделить M (M<N) очень популярных значений (по одному на бакет), а между ними построить сбалансированную по высоте. Вот это был бы гибрид! :) гистограммыHYBRID Код: 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.
HEIGHT BALANCED Код: 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.
12.2 ... |
|||
:
Нравится:
Не нравится:
|
|||
10.06.2021, 01:55 |
|
Hybrid Histograms
|
|||
---|---|---|---|
#18+
На 19.10 все хорошо Код: plsql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19.
... |
|||
:
Нравится:
Не нравится:
|
|||
10.06.2021, 12:50 |
|
|
start [/forum/topic.php?fid=52&gotonew=1&tid=1880118]: |
0ms |
get settings: |
8ms |
get forum list: |
14ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
56ms |
get topic data: |
12ms |
get first new msg: |
7ms |
get forum data: |
3ms |
get page messages: |
54ms |
get tp. blocked users: |
1ms |
others: | 239ms |
total: | 402ms |
0 / 0 |