За последние 24 часа нас посетили 42565 программистов и 1813 роботов. Сейчас ищут 2039 программистов ...

Выборка с помощью LIMIT

Тема в разделе "MySQL", создана пользователем Vladislav_Yushkin, 1 авг 2007.

  1. Vladislav_Yushkin

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

    С нами с:
    19 июн 2007
    Сообщения:
    71
    Симпатии:
    0
    У меня запрос
    SELECT num FROM table1 WHERE num<5 (выполнение запроса 1.5 секунды)

    Он выводит 100 результатов
    А мне нужно 20
    Если используем LIMIT
    SELECT num FROM table1 WHERE num<5 LIMIT 0,20 (выполнение запроса 1 секунда)

    Выводится 20 результатов, но не известно сколько результатов всего.

    Если используем
    SELECT SQL_CALC_FOUND_ROWS num FROM table1 WHERE num<5 LIMIT 0,20 (выполнение запроса 4 секунды)
    Получаем и 20 результатов и свего строк 100, но очень долго выполняется.

    Кто подскажет как лучше сделать.
     
  2. armadillo

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

    С нами с:
    6 апр 2007
    Сообщения:
    2.380
    Симпатии:
    0
    Адрес:
    Russia, Moscow
    повесь индекс на поле num
    уже немыслимо долго.
     
  3. Vladislav_Yushkin

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

    С нами с:
    19 июн 2007
    Сообщения:
    71
    Симпатии:
    0
    INDEX есть, просто много записей
     
  4. armadillo

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

    С нами с:
    6 апр 2007
    Сообщения:
    2.380
    Симпатии:
    0
    Адрес:
    Russia, Moscow
    не верю (с).
    тип поля нум?
    реальный запрос сложнее?
     
  5. stas_t

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

    С нами с:
    24 апр 2007
    Сообщения:
    500
    Симпатии:
    0
    Адрес:
    Courbevoie, France
    версия мускула и что говорит explain?
     
  6. Vladislav_Yushkin

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

    С нами с:
    19 июн 2007
    Сообщения:
    71
    Симпатии:
    0
    armadillo
    Да запрос сложнее, но его упростить невозможно.

    stas_t
    --версия мускула и что говорит explain
    версия 5.0.3
    А на счет - explain, непонял.
     
  7. stas_t

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

    С нами с:
    24 апр 2007
    Сообщения:
    500
    Симпатии:
    0
    Адрес:
    Courbevoie, France
    возьмите ваш запрос select ..., поставьте перед ним оператор explain, выполните полученный запрос explain select ... и результаты в студию (там будет пара строк)