Доброго времени суток) я может тороплю события не добив Льюиса (основы стоимостной оптимизации), но все же...
Есть ли какое-то общее правило как делать semi join? Вроде для этого есть exists, но на моей практике часто быстрее работал select * from t1 where (select count(*) from t2 where t1.rn = t2.prn and rownum = 1) > 0 Или для каждого запроса надо просто смотреть как быстрее будет работать?
ну вот вы планы со статистикой научились смотреть?) посмотрите план на exists, потом на count > 0, сравните статистики... это приблизит к ответу почему один быстрее чем другой (если он действительно быстрее).
Да вот как раз сейчас читаю и думаю что что-то не сходится. Завтра найду пару мест где, как мне казалось, count дал выйгрыш по скорости. Посмотрю планы...