http://msdn.microsoft.com/en-us/library/ms188055.aspx

олкнулись со странной ситуацией в SQL Server 2008 (SP1) - 10.0.2531.0 (X64) - Win2008 SP2 (X64).

Вот один тяжелый запрос:

select t1.id, t2.id 
from t1, t2
where 
     t1.id = t2.ext_id
     and isnull(t1.vchCol1, 'Null') = isnull(t2.vchCol1, 'Null')
     and isnull(t1.vchCol2, 'Null') = isnull(t2.vchCol2, 'Null')
     .... and about 10 more comparisons with Isnull

UPD: Все столбцы в сравнении (кроме идентификаторов)varchar(~ 30 ... 200)
T1 ~ 130 млн. Строк, T2 ~ 300 тыс. Строк.

Эти запросы на довольно большом сервере Dev работают~ 5 часов - это медленно, но что мы можем сделать?

И пока мы исследовали возможные пути оптимизации - мы обнаружили, что изменение"нулевой" в«Слипаются» в запросе выше дает двойной прирост производительности - и запрос теперь выполняется для~ 2 часа

UPD: Когда мы удаляем всеISNULL проверяет и использует толькоt1.vchCol1 = t2.vchCol1 запрос заканчивается после40mins.

Вопрос: Это известное поведение, и мы должныизбежать с помощьюНулевой везде?

Ответы на вопрос(4)

Ваш ответ на вопрос