Это простой вопрос - я просто нашел разные ответы на него, поэтому я не уверен. позвольте мне описать:
Если у вас есть запрос, подобный этому:
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