За последние 24 часа нас посетили 22116 программистов и 1144 робота. Сейчас ищут 790 программистов ...

LIMIT в MYSQL

Тема в разделе "MySQL", создана пользователем vakhtang, 8 ноя 2018.

Метки:
  1. vakhtang

    vakhtang Новичок

    С нами с:
    8 ноя 2018
    Сообщения:
    4
    Симпатии:
    0
    Добрый день

    у меня такой вопрос, как мне выбрать из базы только 10 записей в плане скорости?
    поясню
    у меня скажем есть миллион записей когда я пишу запрос на получение данных и укажу LIMIT 10 то система выберет миллион записей и покажет только 10, то есть времени уйдет все равно как на показ миллиона записей

    как можно получить именно 10 записей из миллиона чтобы скорость была как при получении 10 записей а не миллиона?
     
  2. igordata

    igordata Суперстар
    Команда форума Модератор

    С нами с:
    18 мар 2010
    Сообщения:
    32.410
    Симпатии:
    1.768
    не выберет миллион и покажет 10, а выберет 10 и отдаст тебе 10.
    это конечно если есть индексы =)
     
  3. vakhtang

    vakhtang Новичок

    С нами с:
    8 ноя 2018
    Сообщения:
    4
    Симпатии:
    0
  4. lastdays

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

    С нами с:
    27 сен 2012
    Сообщения:
    410
    Симпатии:
    74
    У тебя запрос с джоином что ли?
    Просто мне по работе попался такой, очень долго выполнялся запрос, оказалось, что тупо индекса не было.
     
  5. miketomlin

    miketomlin Старожил

    С нами с:
    9 авг 2016
    Сообщения:
    3.794
    Симпатии:
    650
    Даже при наличии индекса с LIMIT'ом не все так просто, особенно когда нужно выбрать 10 записей из «середины» списка. В хайлоад для этого используются спец. методы, например задание базы не при помощи параметра LIMIT, а при помощи условия с индексируемым полем.
     
    romach нравится это.
  6. igordata

    igordata Суперстар
    Команда форума Модератор

    С нами с:
    18 мар 2010
    Сообщения:
    32.410
    Симпатии:
    1.768
    профайлер запросов скажет, нужно ли химичить или нет
    в его случае НЕ НУЖНО ещё лет семь как минимум
     
  7. vakhtang

    vakhtang Новичок

    С нами с:
    8 ноя 2018
    Сообщения:
    4
    Симпатии:
    0
    Да имено это я имел в виду например limit 40000,20 но я уже решил эту проблему с помощью кукисов )
     
  8. artoodetoo

    artoodetoo Суперстар
    Команда форума Модератор

    С нами с:
    11 июн 2010
    Сообщения:
    11.076
    Симпатии:
    1.237
    Адрес:
    там-сям
    На самом деле вопрос не лишён смысла. :) Но надо различать случаи
    LIMIT n
    и
    LIMIT m, n
    Первый просто заканчивает работу после выборки n записей.
    Второй находит m + n записей но отдает только последние n из них. И вот тут может появиться провал в производительности при больших значениях m. Тема уже поднималась и на форуме и в целом в интернете. Ищите.
    --- Добавлено ---
    P.S. терпеть не могу слово "хайлоад". :) Это примерно как "сео" только для увеличения стоимости программеров, а не просто пустых пиздаболов. Buzzword.
    --- Добавлено ---
    Вот нашел со своим участием:
    https://php.ru/forum/threads/sluchajnyj-vyvod-iz-bazy.34676/

    Google: "mysql limit performance"
     
    Nerfed и Valick нравится это.
  9. vakhtang

    vakhtang Новичок

    С нами с:
    8 ноя 2018
    Сообщения:
    4
    Симпатии:
    0
    всем спасибо