|
|
|
connect by + distinct
|
|||
|---|---|---|---|
|
#18+
есть вьюха с distinct как будет работать если к ней сделать запрос с connect by ? я правильно понял, что делается свой distinct на каждой итерации ? план выходит такой Код: plaintext 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. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.07.2017, 07:55 |
|
||
|
connect by + distinct
|
|||
|---|---|---|---|
|
#18+
nxx, выполняется distinct, потом строится дерево а вот скоко раз distinct, вопрос імхо, один раз ..... stax ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.07.2017, 09:23 |
|
||
|
connect by + distinct
|
|||
|---|---|---|---|
|
#18+
nxxя правильно понял, что делается свой distinct на каждой итерации ? план выходит такой да ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.07.2017, 09:29 |
|
||
|
connect by + distinct
|
|||
|---|---|---|---|
|
#18+
xtendernxxя правильно понял, что делается свой distinct на каждой итерации ? план выходит такой да не вижу смысла каждый раз сортировать имхо distinct делает раз Код: 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. вызовы для построения вью 3#3#3#2#2#2#1# #3#2#1#2#1# -строим дерево ..... stax ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.07.2017, 11:02 |
|
||
|
connect by + distinct
|
|||
|---|---|---|---|
|
#18+
stax.., Посмотри внимательно на план у тс. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.07.2017, 23:49 |
|
||
|
connect by + distinct
|
|||
|---|---|---|---|
|
#18+
xtenderstax.., Посмотри внимательно на план у тс. судя по плану да, но план ето одно, а как на самом деле хз мож есть какой-то евент которий покажет разницу на больших обьемах, не знаю не вижу смысла на каждом уровне делать distinct построили "in line" вю и на ее основе строим дерево но ораклятам виднее ..... stax ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.07.2017, 09:11 |
|
||
|
connect by + distinct
|
|||
|---|---|---|---|
|
#18+
[offtop]Stax, чёй-то под синей учеткой? Даже непривычно как-то... [/offtop] ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.07.2017, 09:23 |
|
||
|
connect by + distinct
|
|||
|---|---|---|---|
|
#18+
Добрый Э - Эх[offtop]Stax, чёй-то под синей учеткой? Даже непривычно как-то... [/offtop] не знаю как с дублями бороться ps на счет connect by + distinct план (и xtender) наверное правильно показывает не могу придумать пример когда сначала distinct, а потом дерево ..... stax ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.07.2017, 09:34 |
|
||
|
connect by + distinct
|
|||
|---|---|---|---|
|
#18+
Добрый Э - Эхне могу придумать пример когда сначала distinct, а потом дерево Аналитику дoбавь во view: Код: 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. SY. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.07.2017, 15:42 |
|
||
|
connect by + distinct
|
|||
|---|---|---|---|
|
#18+
Staxне вижу смысла на каждом уровне делать distinctответ-подсказка в самом плане ТС - зачем делать дистинкт на миллионах записей, если тебе нужно только 85? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.07.2017, 15:49 |
|
||
|
connect by + distinct
|
|||
|---|---|---|---|
|
#18+
Staxсудя по плану да, но план ето одно, а как на самом деле хзсобственно план - на то и план выполнения, чтобы знать что там "на самом деле"... В твоем же примере план скорее всего такой: Код: 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. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.07.2017, 16:03 |
|
||
|
connect by + distinct
|
|||
|---|---|---|---|
|
#18+
SYДобрый Э - Эхне могу придумать пример когда сначала distinct, а потом дерево Аналитику дoбавь во view: SY. я несколько о другом я считал что distinct выполняется один раз (аля in-line вью если грубо то напр материализуется) и на основе полученного набора строим дерево план показывет другое, distinct будет выполняться много раз (на "каждом" уровне) ..... stax ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.07.2017, 16:15 |
|
||
|
connect by + distinct
|
|||
|---|---|---|---|
|
#18+
xtenderStaxне вижу смысла на каждом уровне делать distinctответ-подсказка в самом плане ТС - зачем делать дистинкт на миллионах записей, если тебе нужно только 85? допустим на первом уровне 85, на дальше уже Хмлн-85 и их надо distinct не вижу выиграша не могу понять почему для 2 1 2 d1 2 1 2 d2 третий уровень стоится один раз я ожидал что он два раза (для d1 и d2) быдет выбирать тройку Код: 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. ..... stax ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.07.2017, 16:34 |
|
||
|
connect by + distinct
|
|||
|---|---|---|---|
|
#18+
xtenderStaxсудя по плану да, но план ето одно, а как на самом деле хзсобственно план - на то и план выполнения, чтобы знать что там "на самом деле"... В твоем же примере план скорее всего такой: Код: 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. такой план меня влаштовует (одна сортировка --> вью--> дерево) но план как у nxx Код: 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. ......... stax ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.07.2017, 16:45 |
|
||
|
connect by + distinct
|
|||
|---|---|---|---|
|
#18+
SY Код: plsql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. SY. хм. а почему так ? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.07.2017, 17:24 |
|
||
|
connect by + distinct
|
|||
|---|---|---|---|
|
#18+
nxxхм. а почему так ? сорри, туплю. всё щас сам понял ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.07.2017, 17:25 |
|
||
|
connect by + distinct
|
|||
|---|---|---|---|
|
#18+
Staxдопустим на первом уровне 85, на дальше уже Хмлн-85 и их надо distinct nxx Код: 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.07.2017, 17:35 |
|
||
|
connect by + distinct
|
|||
|---|---|---|---|
|
#18+
Staxтакой план меня влаштовует (одна сортировка --> вью--> дерево) но план как у nxx Код: 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. разберись в своих тестах и планах. Приложенный план у тебя от другого запроса, нежели в показанном тесте. зы. хз что такое "влаштовует" ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.07.2017, 17:36 |
|
||
|
connect by + distinct
|
|||
|---|---|---|---|
|
#18+
полуоффтопиквообще оракл плохо считает кардинальности для "connect by", т.к. ошибается в кол-ве итераций ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.07.2017, 17:39 |
|
||
|
connect by + distinct
|
|||
|---|---|---|---|
|
#18+
xtenderхз что такое "влаштовует" устраивает, судя по контексту, но могу ошибаться ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.07.2017, 17:45 |
|
||
|
connect by + distinct
|
|||
|---|---|---|---|
|
#18+
Staxя несколько о другом я считал что distinct выполняется один раз (аля in-line вью если грубо то напр материализуется) и на основе полученного набора строим дерево Это как оптимизтор решит. Если есть distinct без выражений вычисляемых над resultset (аналитика, model,...) то естественно гораздо оптимальней делать distinct на каждом уровне, но тогда мы увидим что-то типа CONNECT BY WITHOUT FILTERING (UNIQUE) . А например с аналитикой нет: Код: 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. SY. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.07.2017, 18:10 |
|
||
|
connect by + distinct
|
|||
|---|---|---|---|
|
#18+
xtender разберись в своих тестах и планах. Приложенный план у тебя от другого запроса, нежели в показанном тесте. зы. хз что такое "влаштовует" Код: 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. завязиваю с темой, будет время мож что придумаю с тестом зы "влаштовует" очетятка, правильно "устраивает" ..... stax ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.07.2017, 18:10 |
|
||
|
connect by + distinct
|
|||
|---|---|---|---|
|
#18+
SY, імхо речь несколько о другом distinct, во фразе from (c вьюшки с distinct) типа select ... from (select distinct ...) start with ... речь о втором селекте (может вернуть дубликаты) Код: plsql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. ..... stax ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.07.2017, 18:23 |
|
||
|
connect by + distinct
|
|||
|---|---|---|---|
|
#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. если БЫ select distinct вычислялся на каждом шаге то и время в client_info БЫ поплыло stax_log выпонилась за раз в момет старта 01:00 критикуйте ..... stax ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.07.2017, 10:07 |
|
||
|
connect by + distinct
|
|||
|---|---|---|---|
|
#18+
Stax, Вместо autotrace делай dbms_xplan.display_cursor c параметром +projection - имхо по плану у тебя функция вызывается только после hash unique на шаге View. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.07.2017, 12:30 |
|
||
|
connect by + distinct
|
|||
|---|---|---|---|
|
#18+
xtenderStax, Вместо autotrace делай dbms_xplan.display_cursor c параметром +projection - имхо по плану у тебя функция вызывается только после hash unique на шаге View.поправка: функция stax_log отрабатывает у тебя на шагах HASH UNIQUE: Stax Код: plsql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.07.2017, 13:19 |
|
||
|
connect by + distinct
|
|||
|---|---|---|---|
|
#18+
Staxесли БЫ select distinct вычислялся на каждом шаге то и время в client_info БЫ поплылос чего бы оно поплыло, если у тебя dbms_lock только в stax_log2, которая вызывается уже после? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.07.2017, 13:20 |
|
||
|
connect by + distinct
|
|||
|---|---|---|---|
|
#18+
xtenderStax, Вместо autotrace делай dbms_xplan.display_cursor c параметром +projection - имхо по плану у тебя функция вызывается только после hash unique на шаге View. Код: 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. я так понимаю "STAX_LOG"("ID_REF")[4000] относится не ко VIEW ..... stax ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.07.2017, 13:26 |
|
||
|
connect by + distinct
|
|||
|---|---|---|---|
|
#18+
xtender, по крупному меня интересует не когда ф-ция выполняется, а когда выполняется distinct она (ф-ция) ж не может быть выполнена после distinct stax_log2 выполняэтся на каком етапе? SELECT STATEMENT? ps если придумываю несколько другое, оракля меняет план, который меня устраивает (один distinct) ..... stax ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.07.2017, 14:01 |
|
||
|
connect by + distinct
|
|||
|---|---|---|---|
|
#18+
xtender, 6 | HASH UNIQUE | | 4 | 36 | 5 (20)| 00:00:01 | -- а вот тут то и вызывается 6 раз для 6 строк главный вопрос 6 за один вызов, или 2 раза по три? ..... stax ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.07.2017, 14:07 |
|
||
|
connect by + distinct
|
|||
|---|---|---|---|
|
#18+
Staxа когда выполняется distinct тебе уже несколько раз было сказано - зависит от плана, в приведенном выше плане - выполняется на каждом шаге. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.07.2017, 14:07 |
|
||
|
connect by + distinct
|
|||
|---|---|---|---|
|
#18+
Staxглавный вопрос 6 за один вызов, или 2 раза по три?omg... а как сам думаешь? получи нормальный трейс с allstats last и глянь starts ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.07.2017, 14:12 |
|
||
|
connect by + distinct
|
|||
|---|---|---|---|
|
#18+
xtenderStaxглавный вопрос 6 за один вызов, или 2 раза по три?omg... а как сам думаешь? получи нормальный трейс с allstats last и глянь starts спасибо за starts почему 3, пока не понимаю, ожидал 2, мож 2=(3-1), буду думать(експерементировать) главное что не один ..... stax ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.07.2017, 15:07 |
|
||
|
connect by + distinct
|
|||
|---|---|---|---|
|
#18+
Staxпочему 3, пока не понимаю ну надо же как-то понять, что на 4-й итерации нечего возвращать... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.07.2017, 15:23 |
|
||
|
|

start [/forum/topic.php?all=1&fid=52&tid=1885524]: |
0ms |
get settings: |
9ms |
get forum list: |
20ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
163ms |
get topic data: |
11ms |
get forum data: |
3ms |
get page messages: |
82ms |
get tp. blocked users: |
1ms |
| others: | 234ms |
| total: | 529ms |

| 0 / 0 |
