действует ли LIMIT до или после JOIN?

Это простой вопрос - я просто нашел разные ответы на него, поэтому я не уверен. позвольте мне описать:

Если у вас есть запрос, подобный этому:

SELECT logins.timestamp, users.name
FROM logins 
LEFT JOIN users 
ON users.id = logins.user_id
LIMIT 10

Это в основном перечисляет последние 10 записей в таблице логинов, заменяя user_id на имя пользователя через JOIN.

Теперь мой вопрос: действует ли LIMIT во время соединения (чтобы объединялись только первые 10 записей) или после соединения? (где он объединит всю таблицу, а затем вырежет первые 10 записей)

Я спрашиваю об этом, потому что в образце таблицы логиныбудет много записей, и я не уверен, что присоединиться слишком дорого с точки зрения производительности. Если бы LIMIT выполнял только 10 операций JOIN, это не было бы проблемой.

Второй вопрос, возникший в связи с этим: останется ли функциональность такой же, если добавить DISTINCT? Будет ли он по-прежнему останавливаться на 10 заходах? И нет, это не будет заказано по ORDER BY

5
задан Katai 23 June 2012 в 19:49
поделиться