Re[2]: mssql сильно тормозит OR
От: tnikolai  
Дата: 16.09.21 13:34
Оценка:
Здравствуйте, paradok, Вы писали:

P>автор, попробуй еще вот -на моем ПК это самый быстрый вариант -0.7 сек


P>select top 1000000

P>*
P>from tx1 t1
P> inner join tx1 t2 on ((t1.x1=t2.x1) and t1.id!=t2.id) or ((t1.x2=t2.x2) and t1.id!=t2.id)


top 1 быстро выполняется
без top всего возвращается 158 строк(RAND псевдослучайный, исходные данные должны быть всегда одинаковы), и все варианты дают около 45 сек.


Вроде mssql довольно серьёзная база, и я вообще не ожидал, что простой OR она вообще не способна оптимизировать.
Прочитал разные статьи по оптимизации, пытался хинты, индексы указать, бесполезно. Нет чтоб было написано в статьях прямо: оператор OR в mssql фактически можно считать запрещённым.
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.