Можете ли вы применить LIMIT на MySQL, прежде чем присоединиться к другому? - PullRequest
12 голосов
/ 13 сентября 2011

Например:

SELECT * FROM table_1 LIMIT 5 
LEFT JOIN table_2 AS table_1.id = table_2.id 
WHERE 1

В противном случае механизм берет все table_1 перед применением объединения, затем ограничение, которое может значительно замедлить запрос (с массивными таблицами).

1 Ответ

20 голосов
/ 13 сентября 2011

Вы можете сделать это, присоединившись к подзапросу вместо реальной таблицы. Примерно так должно работать:

SELECT * FROM
    (SELECT * FROM table_1 LIMIT 5) as subq
    LEFT JOIN table_2 ON subq.id = table_2.id WHERE 1
...