powered by simpleCommunicator - 2.0.60     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / Подзапрос sql есть ли флаги для подсказок компилятору
19 сообщений из 19, страница 1 из 1
Подзапрос sql есть ли флаги для подсказок компилятору
    #39615416
ssa82
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
у меня задача простая группировка большой таблицы, и по ключу связывание со справочником, после этого из поля справочника выбрать текст и слегка его модифицировать. Сделал так
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
select 'ch_filter'+ltrim(str(A.id_filter)),dbo.html_getText(FS.FilterDesc+'#','#subject=','#'),cc 

from(
select L.id_filter,count(*) as cc 
FROM            ngd32_to_source AS L INNER JOIN
                         Import_Big AS D ON L.ndg32 = D.ndg32 and D.C_Flag in(0,1)
						 
group by L.id_filter
)A 

inner join dbo.FilterSource FS on A.id_filter=FS.id_filter--это справочник
order by dbo.html_getText(FS.FilterDesc+'#','#subject=','#')



так вот подзапрос выполняется за 8 сек и если делать через темповую таблицу все отлично итог 8 сек, но мне это надо внедрить в общий union и поэтому не хотелось бы городить темповые таблицы.
сам подзапрос возвращает у меня 10 строчек и нагрузка справочник и модификация не существенна.
Но если оставить вот так, то компилятор видимо вставляет это текстовое поле в общую выборку, и модифицирует текст для всех 10М+ строк и запрос уже считается 30 секунд.
Думаю что есть какая то подсказка которая ему намекнёт что подзапрос надо выполнить как есть, но не могу её найти.
Есть варианты?
...
Рейтинг: 0 / 0
Подзапрос sql есть ли флаги для подсказок компилятору
    #39615424
Гавриленко Сергей Алексеевич
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ssa82Но если оставить вот так, то компилятор видимо вставляет это текстовое поле в общую выборку,Т.е вы план не смотрели, так гадаете?
...
Рейтинг: 0 / 0
Подзапрос sql есть ли флаги для подсказок компилятору
    #39615431
ssa82
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
вот тут то я и застрял. ибо по плану он показывает честно все растраты на внутренний запрос, когда появляются внешние там по 0.
Но если выполнять внутренний отдельно в темповую потом селект и связка со справочником то 8 сек
Если совместно 30с

и тут я не понимаю где косяк.
...
Рейтинг: 0 / 0
Подзапрос sql есть ли флаги для подсказок компилятору
    #39615432
TaPaK
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ssa82вот тут то я и застрял. ибо по плану он показывает честно все растраты на внутренний запрос, когда появляются внешние там по 0.
Но если выполнять внутренний отдельно в темповую потом селект и связка со справочником то 8 сек
Если совместно 30с

и тут я не понимаю где косяк.
косяк - скалярка
...
Рейтинг: 0 / 0
Подзапрос sql есть ли флаги для подсказок компилятору
    #39615440
Гавриленко Сергей Алексеевич
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ssa82вот тут то я и застрял. ибо по плану он показывает честно все растраты на внутренний запрос, когда появляются внешние там по 0.
Но если выполнять внутренний отдельно в темповую потом селект и связка со справочником то 8 сек
Если совместно 30с

и тут я не понимаю где косяк.Это вы так план пересказываете?
...
Рейтинг: 0 / 0
Подзапрос sql есть ли флаги для подсказок компилятору
    #39615449
ssa82
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
действительно если убрать функцию скалярную то запрос считается оперативно.
но если этот запрос разбить на шагам
сделать выборку в темп таблицу результат 10 строк
и запустить ту же функцию на этих 10 строках то результат мгновенно.
почему если она по моей логике делает тоже на самом деле начинает тратить ещё 20 секунд куда то.

Про план запроса, я не в курсе как тут можно что то прикреплять)
...
Рейтинг: 0 / 0
Подзапрос sql есть ли флаги для подсказок компилятору
    #39615450
TaPaK
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ssa82,

можно попробовать OPTION(FORCE ORDER) но вообще запро - бред
...
Рейтинг: 0 / 0
Подзапрос sql есть ли флаги для подсказок компилятору
    #39615451
Гавриленко Сергей Алексеевич
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ssa82Про план запроса, я не в курсе как тут можно что то прикреплять)Сохранить в студии в файл и прицепить.
...
Рейтинг: 0 / 0
Подзапрос sql есть ли флаги для подсказок компилятору
    #39615452
Фотография Konst_One
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
сказали же, замени свою скалярку. ну ,например, на табличную ф-ю
...
Рейтинг: 0 / 0
Подзапрос sql есть ли флаги для подсказок компилятору
    #39615457
TaPaK
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Konst_Oneсказали же, замени свою скалярку. ну ,например, на табличную ф-ю
табличная не даст ничего. inline
...
Рейтинг: 0 / 0
Подзапрос sql есть ли флаги для подсказок компилятору
    #39615464
ssa82
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
я не понимаю почему через вложеный скалярная функция все портит а через темповую нет?
...
Рейтинг: 0 / 0
Подзапрос sql есть ли флаги для подсказок компилятору
    #39615466
ssa82
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
план через вложенный
...
Рейтинг: 0 / 0
Подзапрос sql есть ли флаги для подсказок компилятору
    #39615472
ssa82
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
план через темповую группировка
...
Рейтинг: 0 / 0
Подзапрос sql есть ли флаги для подсказок компилятору
    #39615474
ssa82
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
план через темповую выбока
не влез в один блок по размеру
...
Рейтинг: 0 / 0
Подзапрос sql есть ли флаги для подсказок компилятору
    #39615477
TaPaK
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ssa82я не понимаю почему через вложеный скалярная функция все портит а через темповую нет?
может дело в количестве рз сколько она выполняется?
...
Рейтинг: 0 / 0
Подзапрос sql есть ли флаги для подсказок компилятору
    #39615490
ssa82
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
если верить плану то когда она(функция) появляется, она срабатывает на 2 строках. а 10М+ строк уже сгруппировано к этому времени, по идее.. но по времени выполнения подозрение именно что план другой.
хотя это уже вне моего понимания вот и думаю что дело в чём то простом, но в чём?
...
Рейтинг: 0 / 0
Подзапрос sql есть ли флаги для подсказок компилятору
    #39615492
invm
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ssa82я не понимаю почему через вложеный скалярная функция все портит а через темповую нет?Потому что наличие в запросе скалярной UDF исключает построение плана с использованием параллелизма.
...
Рейтинг: 0 / 0
Подзапрос sql есть ли флаги для подсказок компилятору
    #39615501
TaPaK
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
+ индекс на Import_Big.IndC_Flag не подходит, но кто заботиться о поднятии 0,5Гб....
...
Рейтинг: 0 / 0
Подзапрос sql есть ли флаги для подсказок компилятору
    #39615506
ssa82
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
invm,
все верно, на этом вопрос закрываю.
...
Рейтинг: 0 / 0
19 сообщений из 19, страница 1 из 1
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / Подзапрос sql есть ли флаги для подсказок компилятору
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]