У меня есть таблица с 21 столбцом (все целые числа) идентификатор, c1, c2... c20 и что выбрать идентификаторы для строк, которые имеют те же значения в столбцах...
таким образом, строка 1 будет соответствовать строке 10 если строка 1 c1 = строка 10 c1 и строка 1 c2 = строка 10 c2... и так далее.
Это - то, на что похож запрос:
select r1.id, r2.id
from tbl r1, tbl r2
where 1=1 and r1.c1=r2.c1 and r1.c2=r2.c2 and
..... r1.c20=r2.c20 and not r1.id=r2.id
Я в настоящее время использую сам соединение, но это слишком медленно (20 secs для 10 000 строк). У меня есть индексы установки на столбцах (?), у меня есть ~ 1 миллион строк Спасибо
Вы пробовали использовать единый индекс для всех 20 столбцов?
Возможно, вам захочется создать дополнительный столбец, в котором вы сможете хранить хэш всех значений в строке. Затем просто проиндексируйте этот столбец и отфильтруйте строки, соответствующие хэшу из 20 искомых значений.