Здравствуйте, 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 фактически можно считать запрещённым.