![]() |
|
Модераторы: skyboy |
![]()
|
|
| BASILIO |
|
||||
|
Koté-CAH ![]() Профиль Группа: Участник Сообщений: 135 Регистрация: 25.2.2008 Репутация: нет Всего: нет |
Есть таблица
Есть запрос:
В таблице будет потом огромное количество записей, а мне надо выбрать 5 случайных из них, генирировать через ПХП по ID не выход, есть ли способ сделать это внутри sql-запроса, чтоб выдался самый обыкновенный массив с 5-ю случайными строчками? |
||||
|
|||||
| skyboy |
|
||||
|
неОпытный ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 9820 Регистрация: 18.5.2006 Где: Днепропетровск Репутация: 41 Всего: 260 |
если 5 всего, то лучше так:
1. получаем количество записей 2. пять раз делаем следующее: а. получить случайное число от 1 до количества записей(@number) б. выполнить запрос
есть вариант:
но этот вариант вызывает filesort, следовательно, не используется индексы, следовательно, будет сильно тормозить на большом количестве записей. потому, коль у тебя так много записей, воспользуйся лучше первым вариантом |
||||
|
|||||
| BASILIO |
|
||||
|
Koté-CAH ![]() Профиль Группа: Участник Сообщений: 135 Регистрация: 25.2.2008 Репутация: нет Всего: нет |
1. количество записей в таблице или количество записей которые подойдут под запрос через rows_count?
2. если чесно я привёл сжатый вариант таблицы, поправде запрос будет более грамозким в разделе WHERE иммет смысл базу 5 раз грузить такими вещами?
а если строка с номмер @number не будет подходить под условия, он автоматический следущию нужную возьмёт? |
||||
|
|||||
| Fortop |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2200 Регистрация: 13.11.2007 Где: Донецк Репутация: 4 Всего: 42 |
Генерируй случайные ID на стороне приложения, а в запрос передавай уже конкретные ID все сразу
-------------------- Мир это Я. Живее всех живых. |
|||
|
||||
| BASILIO |
|
|||
|
Koté-CAH ![]() Профиль Группа: Участник Сообщений: 135 Регистрация: 25.2.2008 Репутация: нет Всего: нет |
||||
|
||||
| Fortop |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2200 Регистрация: 13.11.2007 Где: Донецк Репутация: 4 Всего: 42 |
Тут либо шашечки, либо ехать.
Если ты хочешь случайные записи из немерянной таблицы, да еще по зубодробительному условию - то выхода у тебя другого нет. Н запросов с случайным LIMIT, как и писал skyboy, -------------------- Мир это Я. Живее всех живых. |
|||
|
||||
| BASILIO |
|
|||
|
Koté-CAH ![]() Профиль Группа: Участник Сообщений: 135 Регистрация: 25.2.2008 Репутация: нет Всего: нет |
Fortop,
ну если я правельно понял лимит, то допустим 100 записей, рандомом выкидывается число 95, но в оставшихся 5-ти строчках нету не одной чтоб подходила, что тогда вернёт запрос? |
|||
|
||||
| Feldmarschall |
|
|||
|
Новичок ![]() ![]() ![]() ![]() Профиль Группа: Участник Сообщений: 2641 Регистрация: 11.12.2007 Репутация: 3 Всего: 32 |
ты неправильно понял лимит
|
|||
|
||||
| Akina |
|
|||
|
Советчик ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 20581 Регистрация: 8.4.2004 Где: Зеленоград Репутация: 106 Всего: 454 |
Отбор подходящих по WHERE записей выполняется до применения LIMIT, так что неподходящие в выборку не попадут. Или ты неверно задаешь условия отбора.
-------------------- О(б)суждение моих действий - в соответствующей теме, пожалуйста. Или в РМ. И высшая инстанция - Администрация форума. |
|||
|
||||
| BASILIO |
|
|||
|
Koté-CAH ![]() Профиль Группа: Участник Сообщений: 135 Регистрация: 25.2.2008 Репутация: нет Всего: нет |
||||
|
||||
![]()
|
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | MySQL | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |