Записи запроса SQL, которые существуют в другой таблице - PullRequest
0 голосов
/ 11 сентября 2018

У меня есть две таблицы: requests (email), results (email, data, processed_at)

Я хочу получить запись от results с processed_at = null и адресом электронной почты, который существует в requests. Мой текущий подход заключается в использовании объединения :

select `results`.* from `results` 
inner join `requests` on `requests`.`email` = `results`.`email` 
where `results`.`processed_at` is null limit 1

К сожалению, это очень медленно. Есть ли более эффективный способ сделать это?

Ответы [ 3 ]

0 голосов
/ 11 сентября 2018

Вы можете попробовать этот запрос

выберите

res. * Из

results res, requests req

, где req. email = res. email

и res. processed_at равно нулю

0 голосов
/ 11 сентября 2018

выберите results. * Из results оставьте соединение requests в requests. email = results. email, где results. processed_at - нулевой предел 1

Я совершенно уверен, что это намного быстрее, чем внутреннее соединение.

0 голосов
/ 11 сентября 2018

Вы также можете использовать подзапрос, например:

SELECT results.*
FROM results
WHERE results.processed_at IS NULL
    AND results.mail IN (SELECT DISTINCT requests.mail FROM requests)
LIMIT 1

Однако я не уверен, что это быстрее.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...