Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Microsoft SQL Server Новый топик    Ответить
 join view с таблицей, которая уже есть в этой самой view  [new]
Cristiano_Rivaldo
Member

Откуда:
Сообщений: 323
Всем привет.

select t
from t_table_1 t1 inner join t_table_2 t2 on t.id = t2.p_id
28 авг 17, 10:30    [20752889]     Ответить | Цитировать Сообщить модератору
 Re: join view с таблицей, которая уже есть в этой самой view  [new]
Cristiano_Rivaldo
Member

Откуда:
Сообщений: 323
select t
from t_table_1 t1 inner join t_table_2 t2 on t.id = t2.p_id
inner join v_test  tv on t1.id=tv.id
where -- условия по t1 и t2

Я ожидал что джойны из вьюхи оптимизатор протолкнет во внешний джойн (с t1 и t2) и будет все красиво.
Но он рассматривает вью как отдельное государство и джойнит результат джойнов из вьюхи с внешних джойном, в следствие чего фул сканы по таблицам и долго время выполнения.
Oracle помнится такие джойны к вьюхам как орехи щелкал.
Индексирование вьюхи не предлагайте - много ограничений, среди которых например наличие apply во вьюхе.
28 авг 17, 10:37    [20752915]     Ответить | Цитировать Сообщить модератору
 Re: join view с таблицей, которая уже есть в этой самой view  [new]
WarAnt
Member

Откуда: Питер
Сообщений: 2421
Cristiano_Rivaldo,

может таки план покажите, а не вашу его вольную интерпретацию
28 авг 17, 10:51    [20752974]     Ответить | Цитировать Сообщить модератору
 Re: join view с таблицей, которая уже есть в этой самой view  [new]
iap
Member

Откуда: Москва
Сообщений: 46954
MSSQL сервер ничего не проталкивает, но раскрывает view в запросе перед оптимизацией.
28 авг 17, 10:59    [20753009]     Ответить | Цитировать Сообщить модератору
 Re: join view с таблицей, которая уже есть в этой самой view  [new]
iap
Member

Откуда: Москва
Сообщений: 46954
iap
MSSQL сервер ничего не проталкивает, но раскрывает view в запросе перед оптимизацией.
Если не считать хинт NOEXPAND, конечно
28 авг 17, 11:00    [20753011]     Ответить | Цитировать Сообщить модератору
 Re: join view с таблицей, которая уже есть в этой самой view  [new]
Cristiano_Rivaldo
Member

Откуда:
Сообщений: 323
iap,

Т.е. Что-то типо этого он не сможет ?
nested loops ----- результат джойна t1 и t2
|
|
|------- nested loops --------- index seek t1
|
|
| (остальные джойны во вьюхе)
28 авг 17, 11:12    [20753048]     Ответить | Цитировать Сообщить модератору
 Re: join view с таблицей, которая уже есть в этой самой view  [new]
aleks222
Guest
Cristiano_Rivaldo
iap,

Т.е. Что-то типо этого он не сможет ?
nested loops ----- результат джойна t1 и t2
|
|
|------- nested loops --------- index seek t1
|
|
| (остальные джойны во вьюхе)


1. Ващето, порядок соединения оптимизатор выбирает из высших соображений. Статистики, например.
2. Поэтому он может и так и сяк.
3. А то, что он пытается "сяк" - недвусмысленно намекает на кривизну вашего запроса.
28 авг 17, 11:39    [20753120]     Ответить | Цитировать Сообщить модератору
 Re: join view с таблицей, которая уже есть в этой самой view  [new]
iap
Member

Откуда: Москва
Сообщений: 46954
Cristiano_Rivaldo,

сервер оптимизирует запрос, предварительно раскрыв в нём тексты view до базовых таблиц.
Если будет выгоден план, который вы показываете, то он сделает это,
если успеет дойти до такого плана (он же ограничен по времени).
По крайней мере, я так думаю. Может, ошибаюсь?
28 авг 17, 11:41    [20753127]     Ответить | Цитировать Сообщить модератору
 Re: join view с таблицей, которая уже есть в этой самой view  [new]
Cristiano_Rivaldo
Member

Откуда:
Сообщений: 323
Ответ нашел тут :
29 авг 17, 08:25    [20755184]     Ответить | Цитировать Сообщить модератору
 Re: join view с таблицей, которая уже есть в этой самой view  [new]
Cristiano_Rivaldo
Member

Откуда:
Сообщений: 323
Parameter sniffing: как обойтись без OPTION(RECOMPILE)
29 авг 17, 08:26    [20755185]     Ответить | Цитировать Сообщить модератору
 Re: join view с таблицей, которая уже есть в этой самой view  [new]
aleks222
Guest
Cristiano_Rivaldo
Parameter sniffing: как обойтись без OPTION(RECOMPILE)


Форумные телепаты опять сели в лужу.
29 авг 17, 08:40    [20755201]     Ответить | Цитировать Сообщить модератору
 Re: join view с таблицей, которая уже есть в этой самой view  [new]
Cristiano_Rivaldo
Member

Откуда:
Сообщений: 323
aleks222,

Никто никуда не сел. Просто по опыту с Оракл мало значения придал аналитике, которая находится в теле вьюхи. Там у меня проблем с этим не было насколько помню...
29 авг 17, 09:29    [20755296]     Ответить | Цитировать Сообщить модератору
 Re: join view с таблицей, которая уже есть в этой самой view  [new]
o-o
Guest
Cristiano_Rivaldo
aleks222,

Никто никуда не сел. Просто по опыту с Оракл мало значения придал аналитике, которая находится в теле вьюхи. Там у меня проблем с этим не было насколько помню...

кажется, в первом посте нет ни намека на параметры, не так ли?
во вьюхе их тем более быть не может.
вопрос: откуда местным телепатам было знать,
что у вас в запросе напиханы параметры?
каков вопрос, таков и ответ, короче.
хотите ответы по теме, предоставляйте вменяемое репро, а не огрызыш кода,
в котором вырезано самое главное
29 авг 17, 09:46    [20755333]     Ответить | Цитировать Сообщить модератору
 Re: join view с таблицей, которая уже есть в этой самой view  [new]
Cristiano_Rivaldo
Member

Откуда:
Сообщений: 323
o-o,

Утро не задалось ?
29 авг 17, 09:54    [20755351]     Ответить | Цитировать Сообщить модератору
 Re: join view с таблицей, которая уже есть в этой самой view  [new]
o-o
Guest
Cristiano_Rivaldo
o-o,

Утро не задалось ?

перевожу для непонятливых ответ от aleks222
29 авг 17, 10:10    [20755378]     Ответить | Цитировать Сообщить модератору
 Re: join view с таблицей, которая уже есть в этой самой view  [new]
Cristiano_Rivaldo
Member

Откуда:
Сообщений: 323
o-o,

Ты так раздосадован из-за того, что я сам смог найти ответ ? Или ты раздосадован из-за того что не успел мне подсказать ?Почему у тебя так бомбит сильно ? У меня претензий ни к кому не было на счет ответов и я тут ни на что не жаловался.
29 авг 17, 10:18    [20755405]     Ответить | Цитировать Сообщить модератору
 Re: join view с таблицей, которая уже есть в этой самой view  [new]
КусокАналитика
Guest
Cristiano_Rivaldo, Вы тут не причем, у o-o и aleks222 давняя проверенная временем, страстная любовь.

Вся пылкость ответа предназначена не Вам:)
29 авг 17, 10:22    [20755421]     Ответить | Цитировать Сообщить модератору
 Re: join view с таблицей, которая уже есть в этой самой view  [new]
o-o
Guest
КусокАналитика
Cristiano_Rivaldo, Вы тут не причем, у o-o и aleks222 давняя проверенная временем, страстная любовь.

Вся пылкость ответа предназначена не Вам:)

нет, ответ адресован как раз Cristiano_Rivaldo.
ибо на сей раз алекс попал в точку.
никто не смог угадать, что за проблема у ТС, ибо она просто отсутсвует в приведенном им коде.
29 авг 17, 10:27    [20755444]     Ответить | Цитировать Сообщить модератору
 Re: join view с таблицей, которая уже есть в этой самой view  [new]
Cristiano_Rivaldo
Member

Откуда:
Сообщений: 323
o-o,

Иногда угадывать не надо. Иногда можно просто предложить варианты решения без лишний злобы и агрессии. А проблему я описал более менее достаточно. Возможно нужна была бы конкретика в виде кода и плана (но я не стал этого делать в виду отсутствия времени на моделирование и огромного кол-ва таблиц по факту). Я просто надеялся что на опыте кто-то наведет на мысль - и сэкономит мое время. Кстати IAP так и сделал.
29 авг 17, 10:40    [20755480]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить