За последние 24 часа нас посетили 17511 программистов и 1622 робота. Сейчас ищут 1685 программистов ...

Выбор записей в произвольном порядке

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

  1. joost

    joost Guest

    Как из таблицы выбрать несколько записей в произвольном порядке (типа random для select )?
     
  2. Luge

    Luge Старожил

    С нами с:
    2 фев 2007
    Сообщения:
    4.680
    Симпатии:
    1
    Адрес:
    Минск
    [sql]SELECT * FROM `table` ORDER BY RAND() LIMIT 4;[/sql]
    выбрать 4 случайные записи
     
  3. armadillo

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

    С нами с:
    6 апр 2007
    Сообщения:
    2.380
    Симпатии:
    0
    Адрес:
    Russia, Moscow
    joost, в поиск - много раз обсуждалось и там много важных моментов по этому поводу.
     
  4. Luge

    Luge Старожил

    С нами с:
    2 фев 2007
    Сообщения:
    4.680
    Симпатии:
    1
    Адрес:
    Минск
    armadillo
    ты про скорость работы RAND() на базе с большим количеством удалённых записей?
     
  5. armadillo

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

    С нами с:
    6 апр 2007
    Сообщения:
    2.380
    Симпатии:
    0
    Адрес:
    Russia, Moscow
    RAND() от записей не зависит
    ORDER BY RAND() зависит от общего количества записей и их объема. Не от удаленных.
    мускул формирует временную таблицу из выборки и ее сортирует.
    В общем случае будет выгоднее что-то типа
    [sql]select * from table where id in (select id from table where $where order by rand())[/sql]
    - так полная выборка будет только с ид.
     
  6. Luge

    Luge Старожил

    С нами с:
    2 фев 2007
    Сообщения:
    4.680
    Симпатии:
    1
    Адрес:
    Минск
  7. armadillo

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

    С нами с:
    6 апр 2007
    Сообщения:
    2.380
    Симпатии:
    0
    Адрес:
    Russia, Moscow
    вот поэтому и надо указать на предыдущие обсуждения, а не отсылать заново к обрывкам. тем более без их объяснения.
     
  8. Luge

    Luge Старожил

    С нами с:
    2 фев 2007
    Сообщения:
    4.680
    Симпатии:
    1
    Адрес:
    Минск
    виноват :oops: , кончаем флудить.
     
  9. Вльдемар

    Вльдемар Активный пользователь

    С нами с:
    20 май 2006
    Сообщения:
    635
    Симпатии:
    0
    Адрес:
    Белхород
    Давно решил сравнить скорости
    по моему где то уже на форуме приводил ссылку
    http://www.uvadega.ru/testspeed.php
     
  10. armadillo

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

    С нами с:
    6 апр 2007
    Сообщения:
    2.380
    Симпатии:
    0
    Адрес:
    Russia, Moscow
    Вльдемар и снова там обсуждалось. Это "псевдопдобор" и он не работает для больших дыр в базе. при ид от 10000 до 11000 практически всегда будет выбираться 10000.
    Скорость зависит от объема остальных полей в таблице, которые выбираются.
    То есть твой "пример" ничего не показывает.

    И у тебя постгре, а у него надо отдельно смотреть как реализован rand()