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

Откуда: Київ
Сообщений: 10428
есть вью с запросом типа

select * from 
(
select c1, c2, c3 from t1
union all
select c1, c2, c3 from t2
)


выполняется 5 секунд, дает 3 млн чтений в профайлере.

Так выполняется моментально и 500 чтений в профайлере

select * from 
(
select c1, c2, c3 from t1
)


Так выполняется моментально и 70 чтений в профайлере

select * from 
(
select c1, c2, c3 from t2
)


Почему так? как изменить исходный запрос, чтобы он работал быстрее?
1 мар 12, 14:11    [12176907]     Ответить | Цитировать Сообщить модератору
 Re: вопроc по UNION  [new]
iap
Member

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

типы полей абсолютно одинаковые?
1 мар 12, 14:12    [12176916]     Ответить | Цитировать Сообщить модератору
 Re: вопроc по UNION  [new]
Winnipuh
Member [заблокирован]

Откуда: Київ
Сообщений: 10428
iap
Winnipuh,

типы полей абсолютно одинаковые?


запросы там посложнее, но типы такие же. Разве что так делается в одном запросе
0 as f_id, -- int not null -- во втором
0 as s_id,-- int not null
NULL as name,-- nvarchar(1024)
1 мар 12, 14:22    [12176981]     Ответить | Цитировать Сообщить модератору
 Re: вопроc по UNION  [new]
iap
Member

Откуда: Москва
Сообщений: 47142
Winnipuh
iap
Winnipuh,

типы полей абсолютно одинаковые?


запросы там посложнее, но типы такие же. Разве что так делается в одном запросе
0 as f_id, -- int not null -- во втором
0 as s_id,-- int not null
NULL as name,-- nvarchar(1024)
Пишите явное преобразование типов, раз там NULL нетипизированный.
Все типы по умолчанию приводятся к типам cjjndtncnde.ob[ полей с бòльшим приоритетом среди всех SELECTов UNION.

А в плане-то, небось, что-то такое должно быть написано?
1 мар 12, 14:28    [12177027]     Ответить | Цитировать Сообщить модератору
 Re: вопроc по UNION  [new]
iap
Member

Откуда: Москва
Сообщений: 47142
Winnipuh
пропущено...


запросы там посложнее, но типы такие же. Разве что так делается в одном запросе
0 as f_id, -- int not null -- во втором
0 as s_id,-- int not null
NULL as name,-- nvarchar(1024)
Пишите явное преобразование типов, раз там NULL нетипизированный.
Все типы по умолчанию приводятся к типам соответствующих полей с бòльшим приоритетом среди всех SELECTов UNION.

А в плане-то, небось, что-то такое должно быть написано?
1 мар 12, 14:29    [12177033]     Ответить | Цитировать Сообщить модератору
 Re: вопроc по UNION  [new]
Winnipuh
Member [заблокирован]

Откуда: Київ
Сообщений: 10428
iap
Winnipuh
пропущено...


запросы там посложнее, но типы такие же. Разве что так делается в одном запросе
0 as f_id, -- int not null -- во втором
0 as s_id,-- int not null
NULL as name,-- nvarchar(1024)
Пишите явное преобразование типов, раз там NULL нетипизированный.
Все типы по умолчанию приводятся к типам соответствующих полей с бòльшим приоритетом среди всех SELECTов UNION.

А в плане-то, небось, что-то такое должно быть написано?


в плане не вижу чего-то такого по типам...

сделал так, но та же фигня...

		CAST(0 AS INT) as f_id,
		CAST(0 AS INT) as s_id,
		CAST(NULL AS NVARCHAR(1024)) as name,
1 мар 12, 14:48    [12177230]     Ответить | Цитировать Сообщить модератору
 Re: вопроc по UNION  [new]
Winnipuh
Member [заблокирован]

Откуда: Київ
Сообщений: 10428
убрал все поля из обоих запросов, оставил по одному, оба uniqueidentifier, та же картина...
1 мар 12, 15:00    [12177316]     Ответить | Цитировать Сообщить модератору
 Re: вопроc по UNION  [new]
Winnipuh
Member [заблокирован]

Откуда: Київ
Сообщений: 10428
Чудесное решение...

вместо одного вью, в котором запрос

select * from 
(
select c1, c2, c3 from t1
union all
select c1, c2, c3 from t2
)


сделал два аналогичных вью и в запросе сделал им юнион - летает, но вопросы остались, почему так
1 мар 12, 15:56    [12177825]     Ответить | Цитировать Сообщить модератору
 Re: вопроc по UNION  [new]
iap
Member

Откуда: Москва
Сообщений: 47142
Winnipuh
Чудесное решение...

вместо одного вью, в котором запрос

select * from 
(
select c1, c2, c3 from t1
union all
select c1, c2, c3 from t2
)


сделал два аналогичных вью и в запросе сделал им юнион - летает, но вопросы остались, почему так
Может, надо было с обновления статистики начать?
Ну это так, предположение.
1 мар 12, 16:05    [12177929]     Ответить | Цитировать Сообщить модератору
 Re: вопроc по UNION  [new]
Winnipuh
Member [заблокирован]

Откуда: Київ
Сообщений: 10428
iap
Winnipuh
Чудесное решение...

вместо одного вью, в котором запрос

select * from 
(
select c1, c2, c3 from t1
union all
select c1, c2, c3 from t2
)


сделал два аналогичных вью и в запросе сделал им юнион - летает, но вопросы остались, почему так
Может, надо было с обновления статистики начать?
Ну это так, предположение.


возможно, но по ходу эксперимента, я создавал вью с другими именами, вроде нечему было было залипать
1 мар 12, 16:29    [12178127]     Ответить | Цитировать Сообщить модератору
 Re: вопроc по UNION  [new]
Crimean
Member

Откуда:
Сообщений: 13147
а планчик никто так и не посмотрел..
1 мар 12, 17:42    [12178704]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить