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

Откуда:
Сообщений: 3
Добрый день всем любителям и профессионалам.
На антиресную ошибку с COALESCE наткнулся я в MSSQL.
Вот попробуйте выполнить.
SET STATISTICS IO ON
declare @t table (col datetime not null)
insert into @t values(getdate())

declare @Date datetime
select @Date = COALESCE(max(col), GETDATE()) from @t -- План ОК
select @Date = COALESCE((select max(col) from @t), GETDATE()) -- План Bad
select @Date = ISNULL((select max(col) from @t), GETDATE()) -- План ОК


Лично я наблюдаю, что во 2м варианте удвоенные чтения, причем на версиях MSSQL 2005, 2008, 2012.
Что с моей точки зрения достойно всякого порицания!
А вы что скажете, уважаемые?
1 окт 14, 20:18    [16646946]     Ответить | Цитировать Сообщить модератору
 Re: Антиресная ошибка с COALESCE  [new]
a_voronin
Member

Откуда: Москва
Сообщений: 4900
Шам
А вы что скажете, уважаемые?


Не надо запрос через одно место писать и не будет удвоенных чтений.
1 окт 14, 20:20    [16646956]     Ответить | Цитировать Сообщить модератору
 Re: Антиресная ошибка с COALESCE  [new]
step_ks
Member

Откуда:
Сообщений: 936
Unnecessarily bad performance for coalesce(subquery)
1 окт 14, 21:22    [16647200]     Ответить | Цитировать Сообщить модератору
 Re: Антиресная ошибка с COALESCE  [new]
Шам
Member

Откуда:
Сообщений: 3
a_voronin
Не надо запрос через одно место писать и не будет удвоенных чтений.


Уровень дискуссии на уровне первого курса ПТУ, однако.
1 окт 14, 21:23    [16647204]     Ответить | Цитировать Сообщить модератору
 Re: Антиресная ошибка с COALESCE  [new]
Шам
Member

Откуда:
Сообщений: 3
step_ks
Unnecessarily bad performance for coalesce(subquery)

ОГРОМНОЕ спасибо!
То есть знают, но править не хотят.
1 окт 14, 21:25    [16647214]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить