|
Cross apply/ Outer apply VS Joins
|
|||
---|---|---|---|
#18+
MankoAnd, у Вас запросы с cross apply семантически отливаются от первого запроса. Т.е. это разные запросы по смыслу, их нельзя сравнивать. ... |
|||
:
Нравится:
Не нравится:
|
|||
11.07.2020, 12:22 |
|
Cross apply/ Outer apply VS Joins
|
|||
---|---|---|---|
#18+
Физических оператора объединения по сути всего три: Hash Match Merge Join Nested Loops Все остальное это варианты объяснений серверу, что вам надо. Если получается быстрее или медленнее - лучше или хуже объяснили вы. ... |
|||
:
Нравится:
Не нравится:
|
|||
11.07.2020, 19:43 |
|
Cross apply/ Outer apply VS Joins
|
|||
---|---|---|---|
#18+
Гавриленко Сергей Алексеевич, кстати мне кажется я Вас лично знаю. Можно иронизировать сколько угодно но пока ни один человек не показал мне запрос c cross apply или outer apply который было бы нельзя написать с join и не потерять производительности. Запросы такого плана дают одинаковый результат но с ечень разным временем ... |
|||
:
Нравится:
Не нравится:
|
|||
12.07.2020, 09:44 |
|
Cross apply/ Outer apply VS Joins
|
|||
---|---|---|---|
#18+
MankoAnd, Автор поста задал вопрос и ответ так и не получил ответ. Такое впечатление что форум более развлекательный. Есть ли конкретные данные (желательно большая таблица, чтоб увидеть разницу производительности) и запрос при которых apply будет единственным способом получить какой-то результат с такой скоростью. Другими способами это будет невозможно или медленно? ... |
|||
:
Нравится:
Не нравится:
|
|||
12.07.2020, 09:58 |
|
Cross apply/ Outer apply VS Joins
|
|||
---|---|---|---|
#18+
MankoAnd, Ну вот, например. Код: sql 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.
Сможете переписать данный APPLY на что-то более эффективнее, буду весьма признателен. ... |
|||
:
Нравится:
Не нравится:
|
|||
12.07.2020, 10:53 |
|
Cross apply/ Outer apply VS Joins
|
|||
---|---|---|---|
#18+
MankoAnd, Код: sql 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.
Дерзайте. ... |
|||
:
Нравится:
Не нравится:
|
|||
12.07.2020, 12:00 |
|
Cross apply/ Outer apply VS Joins
|
|||
---|---|---|---|
#18+
Ennor Tiegael, Код: sql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17.
... |
|||
:
Нравится:
Не нравится:
|
|||
12.07.2020, 12:13 |
|
Cross apply/ Outer apply VS Joins
|
|||
---|---|---|---|
#18+
invm, Пара моментов: 1. Код: sql 1.
- простите, это как? Ну т.е. я вижу, что это работает - в данном конкретном случае. Это вообще где-нибудь документировано? Есть какие-либо гарантии, что оно всегда так работает, или это очередной хак, типа расчета нарастающего итога в апдейте через переменную? Вывести такой столбец в обычный ORDER BY сиквел не позволяет, и мне не понятно, по чему именно он сортирует, хотя и явно не по текстовому представлению XML-ноды. 2. Ваш запрос, буквально в опубликованном виде, съедает 97% стоимости всего батча, на мой вариант приходятся оставшиеся 3%. Переделка TV на временную таблицу слегка улучшает ситуацию, до уровня 75:25. Единственное, как мне удалось заставить ваш запрос работать дешевле моего, это изменением первого XPath на Код: sql 1.
В этом случае отношение query cost становится 9:91 в вашу пользу. Мда, неудачный пример наверное - слишком многое зависит от внутренних особенностей XML-парсера. Но за вариант спасибо, интересный прикол. ... |
|||
:
Нравится:
Не нравится:
|
|||
12.07.2020, 16:53 |
|
Cross apply/ Outer apply VS Joins
|
|||
---|---|---|---|
#18+
Ennor Tiegael простите, это как? Ну т.е. я вижу, что это работает - в данном конкретном случае. Это вообще где-нибудь документировано? Другого объяснения у меня нет. Ennor Tiegael Ваш запрос, буквально в опубликованном виде, съедает 97% стоимости всего батча, на мой вариант приходятся оставшиеся 3% Код: sql 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.
Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15.
... |
|||
:
Нравится:
Не нравится:
|
|||
12.07.2020, 19:00 |
|
Cross apply/ Outer apply VS Joins
|
|||
---|---|---|---|
#18+
Ennor Tiegael, Вот "бессюрпризный" вариант Код: sql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18.
... |
|||
:
Нравится:
Не нравится:
|
|||
12.07.2020, 22:24 |
|
Cross apply/ Outer apply VS Joins
|
|||
---|---|---|---|
#18+
invm, Трюк с получением позиции ноды через FLWOR я знаю, и он заметно медленнее. Но конечно да, ваш row_number() бьет по производительности все, что угодно. Мне даже в голову не приходило, что так можно :) Мда, отстал я в развитии. Вот что бывает, когда переезжаешь в страну, где нет работы по специальности... ... |
|||
:
Нравится:
Не нравится:
|
|||
13.07.2020, 04:16 |
|
Cross apply/ Outer apply VS Joins
|
|||
---|---|---|---|
#18+
Ennor Tiegael Трюк с получением позиции ноды через FLWOR я знаю, и он заметно медленнее. Код: sql 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.
Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23.
... |
|||
:
Нравится:
Не нравится:
|
|||
13.07.2020, 09:48 |
|
|
start [/forum/topic.php?fid=46&gotonew=1&tid=1685887]: |
0ms |
get settings: |
9ms |
get forum list: |
14ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
27ms |
get topic data: |
13ms |
get first new msg: |
8ms |
get forum data: |
3ms |
get page messages: |
54ms |
get tp. blocked users: |
1ms |
others: | 274ms |
total: | 411ms |
0 / 0 |