LEFT JOIN не учитывает LIMIT

technology4md

Новичок
LEFT JOIN не учитывает LIMIT

Здравствуйте.

Есть две таблицы.

models:

| id | name | brand |
+-----------+--------+--------+
|1 |astra | opel |
|1 |omega | opel |
....
|250000 |cadet | opel |

brands:

| id | code | name |
+-----------+--------+--------+
|1 |opel | Opel |
|1 |opel | Opel |
....
|1000 |opel | Opel |


В таблице models 250000 строк
Запрос:
SELECT t1.name,t2.name as brand FROM models as t1
LEFT JOIN brands as t2 on t2.code=t1.brand
where ... group by t1.id LIMIT 0,20

EXEC TIME - 1 minut

Если я меняю LIMIT 0,20 на LIMIT 0,10000

EXEC TIME точно такой-же: 1 minut

Я думаю что запрос с начала присваивает всем 250000 моделей brand_name и потом выбирает 20 из списка.

Если это так, как сделать чтобы LEFT JOIN работал только для 20 моделей.

Спасибо.
 

technology4md

Новичок
к примеру where brand='opel'

-~{}~ 24.08.09 19:22:

дело в том что если в таблице 5000 моделей, выборка происходит быстро.
и если точнее без group by не тормозит
а group by мне нужен

-~{}~ 24.08.09 19:24:

но всё-таки почему LEFT JOIN не обращает внимание на LIMIT ?
 

findnext

Новичок
но всё-таки почему LEFT JOIN не обращает внимание на LIMIT ?
откуда ты взял что это именно так?

-~{}~ 25.08.09 00:23:

вся твоя проблема в том, что ты дёргаешь целые таблицы, когда нужно выбрать только необходимую инфу. В таких случаях используют подзапросы во where без всяких group by в главном запросе
 
Сверху