За последние 24 часа нас посетили 17990 программистов и 1650 роботов. Сейчас ищут 1199 программистов ...

select and limit

Тема в разделе "MySQL", создана пользователем joost, 5 мар 2008.

  1. joost

    joost Guest

    как работает 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
     
  2. joost

    joost Guest

    точнее запрос выполняется, но 14.8580 сек
     
  3. topas

    topas Активный пользователь

    С нами с:
    16 авг 2006
    Сообщения:
    2.258
    Симпатии:
    36
    насколько помню выполняется запрос, потом применяется сортировка, потом делается лимит всего этого

    + внутренняя оптимизация MySQL
    http://www.mysql.ru/docs/man/Query_Speed.html
     
  4. topas

    topas Активный пользователь

    С нами с:
    16 авг 2006
    Сообщения:
    2.258
    Симпатии:
    36
    И не забывай, что выражение WHERE применяется к каждой записи :)
     
  5. Anonymous

    Anonymous Guest

    Вариантов несколько.
    1. Если выборка с лимитом без ORDER - хватается нужное количество данных с начала(условного)таблицы. Если есть первчиный ключ, то обычно опираются на него.
    2. Выборка с лимитом с ORDER по полю без индекса - выдирается все!, сортируется все!, берется нужное кол-во записей.
    3. Выборка с лимитом с ORDER по полю с индексом - сортировка по индексу(быстрая), хватается нужное количество данных.
    Это общие случаи - 90%.

    Это очень медленный запрос сам по себе, ибо затрагивает текстовые поля! тут надо выбирать id, на которых висят индексы, и их сравнивать, а во вторыых, MySQL НЕ УМЕЕТ В ПРИНЦИПЕ ВКЛЮЧАТЬ ДАННЫЕ ОПТИМИЗАЦИИ ПОДЗАПРОСА В ОПТИМИЗАЦИЮ РОДИТЕЛЬСКОГО!
     
  6. Anonymous

    Anonymous Guest

    Вот почему оракл стоит своих денег :)