Ваши запросы будут возвращать те же результаты, только если верно одно из следующих условий:
location
записей не существует для всех пользователей. users
имеет дубликат user_id
s.
Непонятно какой. И наличие country
в обеих таблицах говорит о том, что с вашей моделью данных что-то не так.
Тем не менее, если вам нужна как фильтрация по join
, так и фильтрация по стране, я бы порекомендовал:
select *
from users u join
locations l
on u.user_id = l.user_id
where l.country = 'heaven';
И вам нужен индекс locations(country, user_id)
. Это должно найти две записи в locations
и найти соответствующие значения в users
. Кажется, это самый быстрый способ сделать то, что вы хотите.