|
Full join без условия
|
|||
---|---|---|---|
#18+
Доброго дня! Подскажите как оптимизировать вот такой запрос: Код: sql 1. 2. 3. 4. 5. 6. 7. 8. 9.
В результате мне нужна таблица в который есть каждый магазин с каждой неделей каждого года... Есть два запроса в одном магазины, в другом таблица дат по неделям. Я пытался создавать временные таблицы для календаря и для таблицы магазинов, заметного прироста это не дало. Я не умею разбирать планы, понимаю что на скриншоте, всё время занимает сканирование индекса... А как обойти это ? ... |
|||
:
Нравится:
Не нравится:
|
|||
30.09.2020, 10:33 |
|
Full join без условия
|
|||
---|---|---|---|
#18+
Вам нужен не FULL а CROSS JOIN. ... |
|||
:
Нравится:
Не нравится:
|
|||
30.09.2020, 10:35 |
|
Full join без условия
|
|||
---|---|---|---|
#18+
msLex, Спасибо за ответ. Действительно оператор CROSS JOIN для моей задачи подходит идеально. Но увы запрос как выполнялся ~30 мин, сейчас 27 мин, так и выполняется. Может будут еще рекомендации по оптимизации ? ... |
|||
:
Нравится:
Не нравится:
|
|||
30.09.2020, 11:11 |
|
Full join без условия
|
|||
---|---|---|---|
#18+
bitocheg, А сколько записей возвращается? Без джоина с периодами сколько времени длится выборка? Если что-то и можно оптимизировать, то это в первом селекте (который от нас скрыт) ... |
|||
:
Нравится:
Не нравится:
|
|||
30.09.2020, 11:16 |
|
Full join без условия
|
|||
---|---|---|---|
#18+
bitocheg Я не умею разбирать планы, понимаю что на скриншоте, всё время занимает сканирование индекса. Это только в плане. Нужно смотреть Actual Execution Plan. Eщё полезно Live Query Statistics, чтобы по 30 минут не ждать. GETDATE() - вынести в переменную и вычислять 1 раз. ... |
|||
:
Нравится:
Не нравится:
|
|||
30.09.2020, 11:21 |
|
Full join без условия
|
|||
---|---|---|---|
#18+
Oleg_SQL, При соединении возвращается 11млн записей. Таблица магазинов ~ 6сек = 30000 записей. И таблица дат ~ 1сек и 500 записей. При поиске магазинов в подзапросе используется IS NOT NULL, может стоит грешить на него...? ... |
|||
:
Нравится:
Не нравится:
|
|||
30.09.2020, 11:23 |
|
Full join без условия
|
|||
---|---|---|---|
#18+
Андрей Юниор GETDATE() - вынести в переменную и вычислять 1 раз. а она 1 раз и вычисляется здесь ... |
|||
:
Нравится:
Не нравится:
|
|||
30.09.2020, 11:25 |
|
Full join без условия
|
|||
---|---|---|---|
#18+
Oleg_SQL, Код: sql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21.
Вот первый запрос... Надеюсь поймете, что тут делаю.. ... |
|||
:
Нравится:
Не нравится:
|
|||
30.09.2020, 11:26 |
|
Full join без условия
|
|||
---|---|---|---|
#18+
bitocheg Oleg_SQL, При соединении возвращается 11млн записей. Таблица магазинов ~ 6сек = 30000 записей. И таблица дат ~ 1сек и 500 записей. Так может у вас проблемы именно с передачей этих самых 11 млн (вообще, должно быть 15) записей от сервера клиенту? что будет при Код: sql 1. 2. 3.
? ... |
|||
:
Нравится:
Не нравится:
|
|||
30.09.2020, 11:28 |
|
Full join без условия
|
|||
---|---|---|---|
#18+
bitocheg Oleg_SQL, При соединении возвращается 11млн записей. Таблица магазинов ~ 6сек = 30000 записей. И таблица дат ~ 1сек и 500 записей. При поиске магазинов в подзапросе используется IS NOT NULL, может стоит грешить на него...? а нет ли там оператора OR в условии? ... |
|||
:
Нравится:
Не нравится:
|
|||
30.09.2020, 11:30 |
|
Full join без условия
|
|||
---|---|---|---|
#18+
msLex, Хм)) 21 секунда. Это в студии так долго результат получается ? ... |
|||
:
Нравится:
Не нравится:
|
|||
30.09.2020, 11:34 |
|
Full join без условия
|
|||
---|---|---|---|
#18+
bitocheg msLex, Хм)) 21 секунда. Это в студии так долго результат получается ? Скорее рендерит грид на 11 млн строк ... |
|||
:
Нравится:
Не нравится:
|
|||
30.09.2020, 11:35 |
|
Full join без условия
|
|||
---|---|---|---|
#18+
Oleg_SQL, Запрос выше, там только IS NOT NULL и GROUP BY. Но похоже это в студии так долго обрабатывается запрос. В Power Pivot тоже быстро выгрузилось.. ... |
|||
:
Нравится:
Не нравится:
|
|||
30.09.2020, 11:36 |
|
Full join без условия
|
|||
---|---|---|---|
#18+
Спасибо всем за помощь! :) ... |
|||
:
Нравится:
Не нравится:
|
|||
30.09.2020, 11:36 |
|
Full join без условия
|
|||
---|---|---|---|
#18+
bitocheg Oleg_SQL, Код: sql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21.
Вот первый запрос... Надеюсь поймете, что тут делаю.. Если это весь запрос, то зачем REPLACE? Условие "where WorkingTT.Сумма IS NOT NULL" тоже не имеет смысла, ибо не будет NULL ... |
|||
:
Нравится:
Не нравится:
|
|||
30.09.2020, 11:39 |
|
|
start [/forum/topic.php?fid=46&fpage=46&tid=1685589]: |
0ms |
get settings: |
8ms |
get forum list: |
12ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
26ms |
get topic data: |
11ms |
get forum data: |
2ms |
get page messages: |
46ms |
get tp. blocked users: |
1ms |
others: | 277ms |
total: | 389ms |
0 / 0 |