|
Оконный DISTINCT COUNT
|
|||
---|---|---|---|
#18+
Мне потребовалось посчитать оконный DISTINCT COUNT, который не поддерживается даже в SQL 2014. Прошу высказаться по поводу оптимальности данного метода. Может у кого есть идеи получше. И поправьте меня, если я не прав, но это должно работать начиная с SQL 2005. Код: 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.
... |
|||
:
Нравится:
Не нравится:
|
|||
11.03.2015, 14:13 |
|
Оконный DISTINCT COUNT
|
|||
---|---|---|---|
#18+
Код: sql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13.
"Высокопроизводительный код T-SQL. Оконные функции" Ицик Бен-Ган ... |
|||
:
Нравится:
Не нравится:
|
|||
12.03.2015, 09:47 |
|
Оконный DISTINCT COUNT
|
|||
---|---|---|---|
#18+
denvio, Планы почти одинаковые, но с Row_Number есть один лишний шаг. Код: 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.
... |
|||
:
Нравится:
Не нравится:
|
|||
12.03.2015, 13:54 |
|
Оконный DISTINCT COUNT
|
|||
---|---|---|---|
#18+
без параллелизма у меня вот такая картина. Какому методу отдать предпочтение, вопрос пока открыт для меня... ... |
|||
:
Нравится:
Не нравится:
|
|||
13.03.2015, 17:51 |
|
Оконный DISTINCT COUNT
|
|||
---|---|---|---|
#18+
denvio, a_voronin посмотрите что будет по чтениям ... |
|||
:
Нравится:
Не нравится:
|
|||
13.03.2015, 18:08 |
|
Оконный DISTINCT COUNT
|
|||
---|---|---|---|
#18+
0-0, На моём 2014-ом CASE WHEN ROW_NUMBER() проигрывает DENSE_RANK на несколько процентов по всем параметрам ... |
|||
:
Нравится:
Не нравится:
|
|||
13.03.2015, 20:25 |
|
Оконный DISTINCT COUNT
|
|||
---|---|---|---|
#18+
5 разных серверов, 3 снимка в разное время. Чтение все время больше у ROW_NUMBER(), только вот Duration в большинстве случаев не в пользу DENSE_RANK ... |
|||
:
Нравится:
Не нравится:
|
|||
15.03.2015, 12:45 |
|
Оконный DISTINCT COUNT
|
|||
---|---|---|---|
#18+
Как нужно тестировать и почему оконные функции не панацея Код: 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.
Без индекса:descriptionelapsed time, mslogical readsgroup by + count(distinct)480,5788694dense_rank() + max()3563,02262054797row_number() + count()3581,25242054926 С индексом:descriptionelapsed time, mslogical readsgroup by + count(distinct)310,23984474row_number() + count()2131,19342051463dense_rank() + max()2195,32342051484 ... |
|||
:
Нравится:
Не нравится:
|
|||
15.03.2015, 17:23 |
|
|
start [/forum/topic.php?fid=46&msg=38901343&tid=1684405]: |
0ms |
get settings: |
9ms |
get forum list: |
13ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
191ms |
get topic data: |
9ms |
get forum data: |
2ms |
get page messages: |
50ms |
get tp. blocked users: |
1ms |
others: | 13ms |
total: | 294ms |
0 / 0 |