Недавно я задал этот вопрос о том, как запрашивать повторяющиеся строки в БД. Ответ, который я получил, работал и был намного быстрее, но я расширил набор данных с 20 000 строк до 80 000 строк, и время, затрачиваемое на запрос, составляет минуты, что неприемлемо.
Если у меня есть такая таблица:
ID Name Country
1 Dave UK
2 Jim UK
3 Dave UK
4 Dave US
5 Jim US
Я хочу иметь возможность возвращать строки 1 и 3, потому что это единственные строки, в которых комбинация имени и страны появляется более одного раза.
Текущий ответ заключался в следующем:
select r
from Runner r
where exists
(
select rn
from Runner rn
where rn.id <> r.id
and rn.name = r.name
and rn.country = r.country
)
Но это занимает слишком много времени. Мне было интересно, может ли кто-нибудь оптимизировать этот запрос, чтобы быть более эффективным в сравнении, или есть ли какие-либо стратегии для значительного повышения производительности запроса?