Этот баннер — требование Роскомнадзора для исполнения 152 ФЗ.
«На сайте осуществляется обработка файлов cookie, необходимых для работы сайта, а также для анализа использования сайта и улучшения предоставляемых сервисов с использованием метрической программы Яндекс.Метрика. Продолжая использовать сайт, вы даёте согласие с использованием данных технологий».
Политика конфиденциальности
|
|
|
function + cte + filter
|
|||
|---|---|---|---|
|
#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. Возможно ли сделать так, чтобы подобная функция умела накладывать фильтр массово в разрезе договора, а не явно указывать параметр в функции? Код: sql 1. 2. 3. 4. 5. 6. По факту в плане запросов всегда идет scan всей таблицы, а только потом накладывается ограничение по договору ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.08.2018, 20:16 |
|
||
|
function + cte + filter
|
|||
|---|---|---|---|
|
#18+
вот так больше шансов на фильтр по @ContractId Код: 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. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.08.2018, 20:49 |
|
||
|
function + cte + filter
|
|||
|---|---|---|---|
|
#18+
Hamber, Функцию перепешите так: Код: sql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. Плюс индексы по (ContractId, StartDate) на table1 и table2. Запрос перепешите через outer apply, как уже показали. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.08.2018, 21:36 |
|
||
|
function + cte + filter
|
|||
|---|---|---|---|
|
#18+
invm, +1, лучше и не сделаешь! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.08.2018, 11:06 |
|
||
|
function + cte + filter
|
|||
|---|---|---|---|
|
#18+
invm, в результате на каждую запись в договоре получаем вызов функции и 3 дополнительных select-а. и при количестве договоров больше сотни тысяч сервер уходит в долгие раздумья ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.08.2018, 16:50 |
|
||
|
function + cte + filter
|
|||
|---|---|---|---|
|
#18+
ShIgorinvm, в результате на каждую запись в договоре получаем вызов функции и 3 дополнительных select-а. и при количестве договоров больше сотни тысяч сервер уходит в долгие раздумьяЭто план показал??? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.08.2018, 16:52 |
|
||
|
function + cte + filter
|
|||
|---|---|---|---|
|
#18+
ShIgorinvm, в результате на каждую запись в договоре получаем вызов функции и 3 дополнительных select-а. и при количестве договоров больше сотни тысяч сервер уходит в долгие раздумья Вызов функции и селекты как таковые на сотнях тысячах и даже миллионах записей не должны уводить нормальный сервер в долгие раздумья вот 100000 x2 Seek-а на не самых быстрых дисках могут заставить его задуматься. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.08.2018, 17:01 |
|
||
|
function + cte + filter
|
|||
|---|---|---|---|
|
#18+
ShIgorв результате на каждую запись в договоре получаем вызов функции и 3 дополнительных select-а. и при количестве договоров больше сотни тысяч сервер уходит в долгие раздумья Анализируйте, размышляйте и т.п... Код: 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. ЗЫ: Особо рекомедую поразмышлять на разницей при индексах со StartDate asc и desc ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.08.2018, 18:43 |
|
||
|
function + cte + filter
|
|||
|---|---|---|---|
|
#18+
invm, ага.. задача, я так понял, решена не много не та что поставлена, ну да ладно.. не суть. предположим надо найти начальную дату промежутка в который попадает "левая" дата из другой таблы, а не фиксированная главное, закомментарим создание индексов, т.к. обычно в таких таблах их и не бывает. задача часто встречается на данных 1С при работе с периодическими значениями, например "цена на дату", решают почти так как в примере invm и это работает очень быстро, но здесь и сейчас. a при работе с историей, в DWH, этот подход начинает проигрывать видоизменим скрипт, оставив быструю часть оригинала и сравним еще раз Код: 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. а если убрать maxdop, то ситуация усугубляется еще больше ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.08.2018, 01:00 |
|
||
|
function + cte + filter
|
|||
|---|---|---|---|
|
#18+
ShIgorзадача, я так понял, решена не много не та что поставленаРазве? ShIgorпредположим надо найти начальную дату промежутка в который попадает "левая" дата из другой таблы, а не фиксированная главное, закомментарим создание индексов, т.к. обычно в таких таблах их и не бывает. задача часто встречается на данных 1С при работе с периодическими значениями, например "цена на дату", решают почти так как в примере invm и это работает очень быстро, но здесь и сейчас. a при работе с историей, в DWH, этот подход начинает проигрыватьДавайте оставаться в рамках задачи ТС, для которой и предложено решение, а не фантазировать и выдумывать свои. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.08.2018, 10:36 |
|
||
|
function + cte + filter
|
|||
|---|---|---|---|
|
#18+
invm, ну так давайте... Hamber ...а не явно указывать параметр в функции для Вашей же функции уже необходимо 2 параметра ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.08.2018, 12:33 |
|
||
|
|

start [/forum/topic.php?fid=46&msg=39685673&tid=1689288]: |
0ms |
get settings: |
9ms |
get forum list: |
17ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
45ms |
get topic data: |
11ms |
get forum data: |
2ms |
get page messages: |
56ms |
get tp. blocked users: |
2ms |
| others: | 262ms |
| total: | 410ms |

| 0 / 0 |
