как работает select с limit выбирает все записи, но дает только то количество, что указано в limit, или выбирает только то количество, что в лимит? и еще почему обрывается запрос ? [sql] select * from `model` where `code_descr`=1 and `name_model` not in (select `name_model` from `descr`)limit 10 [/sql] в таблице model 27 000 записей, в descr - 1000
насколько помню выполняется запрос, потом применяется сортировка, потом делается лимит всего этого + внутренняя оптимизация MySQL http://www.mysql.ru/docs/man/Query_Speed.html
Вариантов несколько. 1. Если выборка с лимитом без ORDER - хватается нужное количество данных с начала(условного)таблицы. Если есть первчиный ключ, то обычно опираются на него. 2. Выборка с лимитом с ORDER по полю без индекса - выдирается все!, сортируется все!, берется нужное кол-во записей. 3. Выборка с лимитом с ORDER по полю с индексом - сортировка по индексу(быстрая), хватается нужное количество данных. Это общие случаи - 90%. Это очень медленный запрос сам по себе, ибо затрагивает текстовые поля! тут надо выбирать id, на которых висят индексы, и их сравнивать, а во вторыых, MySQL НЕ УМЕЕТ В ПРИНЦИПЕ ВКЛЮЧАТЬ ДАННЫЕ ОПТИМИЗАЦИИ ПОДЗАПРОСА В ОПТИМИЗАЦИЮ РОДИТЕЛЬСКОГО!