Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / Подзапрос sql есть ли флаги для подсказок компилятору / 19 сообщений из 19, страница 1 из 1
15.03.2018, 14:42
    #39615416
ssa82
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Подзапрос sql есть ли флаги для подсказок компилятору
у меня задача простая группировка большой таблицы, и по ключу связывание со справочником, после этого из поля справочника выбрать текст и слегка его модифицировать. Сделал так
Код: 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
15.03.2018, 14:45
    #39615424
Гавриленко Сергей Алексеевич
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Подзапрос sql есть ли флаги для подсказок компилятору
ssa82Но если оставить вот так, то компилятор видимо вставляет это текстовое поле в общую выборку,Т.е вы план не смотрели, так гадаете?
...
Рейтинг: 0 / 0
15.03.2018, 14:52
    #39615431
ssa82
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Подзапрос sql есть ли флаги для подсказок компилятору
вот тут то я и застрял. ибо по плану он показывает честно все растраты на внутренний запрос, когда появляются внешние там по 0.
Но если выполнять внутренний отдельно в темповую потом селект и связка со справочником то 8 сек
Если совместно 30с

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

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

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

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

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


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