169 похожих чатов

А есть способ вот этих четырех в один запрос обьеденить?


;with DEL_TYPE as (
SELECT DISTINCT( coalesce( (CASE WHEN delivery_type = 'COURIER' THEN 1 ELSE 0 END),-1)) as delivery_type_int
FROM td.orders as ord WITH (NOLOCK)
WHERE (ord.date_create >= @DStart)and(date_create <= @DEnd)
),
REG_DEL as ( -- Список всех уникальных значений регионов
SELECT DISTINCT(ord.region_delivery_id) as region_delivery_id
FROM td.orders as ord WITH (NOLOCK)
WHERE (ord.date_create >= @DStart)and(date_create <= @DEnd)
),
WEBSHOP as ( -- Список всех уникальных значений вебшопов
SELECT DISTINCT(ord.webshop_id) as webshop_id
FROM td.orders as ord WITH (NOLOCK)
WHERE (ord.date_create >= @DStart)and(date_create <= @DEnd)
),
DAT as ( -- Список всех уникальных значений дат в выбранном периоде
SELECT DISTINCT(cast(ord.date_create as date)) as report_date
FROM td.orders as ord WITH (NOLOCK)
WHERE (ord.date_create >= @DStart)and(date_create <= @DEnd)
),
CD as (
SELECT TOP 100 PERCENT * --- Берем все возможные сочетания всех вышепосчитанных параметров
FROM DAT, WEBSHOP, REG_DEL, DEL_TYPE
ORDER BY 1
),

7 ответов

11 просмотров

Сделайте через темповые таблицы #tmp,если объем темповых данный большой, делайте primary key где это нужно. После того как получите данные своим запросом, откройте план выполнения. Когда вы джойните несколько cte друг с другом план запроса выходит просто ужасный

Для таких объёмов не стоит использовать cte, сделайте тестовые таблицы и на все ключевые поля primary key, думаю разница будет огромная в быстродействии

Что "вот"? В Киеве дядька? ;) Ещё раз, Вы утверждали: > Когда вы джойните несколько cte друг с другом план запроса выходит просто ужасный Так вот, это не так. Мне любопытно, как (и какие) "преимущества индексов" для Вас являются основанием для таких убеждений?

Yaroslav Schekin
Что "вот"? В Киеве дядька? ;) Ещё раз, Вы утвержда...

Наверно я не правильно выразился сказав что "план выходит ужасный". Я имел в виду влияние на быстродействие. Если вы после выборки в CTE большого объёма данных начинаете проводить какие-то манипуляции с данными, объединение, изменение, то на таких таблицах лучше иметь индексы. Почему лучше иметь индексы, очевидно.

Давайте, продемонстрируйте. Вы обратили внимание на условия в моём утверждении, или проигнорировали их? ;)

Yaroslav Schekin
Давайте, продемонстрируйте. Вы обратили внимание н...

Ну да, в ограниченных условиях "всегда и хуже", а в остальных - нет.

Похожие вопросы

Обсуждают сегодня

Господа, а что сейчас вообще с рынком труда на делфи происходит? Какова ситуация?
Rꙮman Yankꙮvsky
29
А вообще, что может смущать в самой Julia - бы сказал, что нет единого стандартного подхода по многим моментам, поэтому многое выглядит как "хаки" и произвол. Короче говоря, с...
Viktor G.
2
30500 за редактор? )
Владимир
47
а через ESC-код ?
Alexey Kulakov
29
Чёт не понял, я ж правильной функцией воспользовался чтобы вывести отладочную информацию? но что-то она не ловится
notme
18
У меня есть функция где происходит это: write_bit(buffer, 1); write_bit(buffer, 0); write_bit(buffer, 1); write_bit(buffer, 1); write_bit(buffer, 1); w...
~
14
Добрый день! Скажите пожалуйста, а какие программы вы бы рекомендовали написать для того, чтобы научиться управлять памятью? Можно написать динамический массив, можно связный ...
Филипп
7
Недавно Google Project Zero нашёл багу в SQLite с помощью LLM, о чём достаточно было шумно в определённых интернетах, которые сопровождались рассказами, что скоро всех "ибешни...
Alex Sherbakov
5
Ребят в СИ можно реализовать ООП?
Николай
33
https://github.com/erlang/otp/blob/OTP-27.1/lib/kernel/src/logger_h_common.erl#L174 https://github.com/erlang/otp/blob/OTP-27.1/lib/kernel/src/logger_olp.erl#L76 15 лет назад...
Maksim Lapshin
20
Карта сайта