Быстрая выборка

Dacascas

Новичок
Быстрая выборка

Здравствуйте.

У меня есть такие две сложности.
1) Есть таблица с множеством записей которые не идут попорядку. Есть поле id - auto_increment. Задача состоит в том что - бы выбрать несколько разных записей и при этом воспользоваться только одним запросом выбора.
2) В той же таблице. Как заполнить "пробелы в записях". Тоесть после удаления записи поле остается пустим. Как сделать оптимально последующие добавление в эти ячейки.

Помогити, а то голова кругом идет...
 
В смысле "и".
Выборка к примеру:
есть несколько строк текста в таблице

/id/
/1/
/2/
/3/
/4/
/5/

нужно одним запросом выбрать произвольно несколько записей которые не повторяются

примером /id/
/1/
/3/
/5/

но запрос сам должен определить какие записи выбрать типа
random
Почему это не сделать на пхп и вложить в запрос сразу числа?
Потому что нужно что-бы одновременно запрос обходил пустых записи.

За второй ответ спасибо.
 
UNION столько раз, сколько случайных записей нужно выбрать. ORDER BY RAND() - тормоз.
 
В поиск по сайту
100500 раз обсуждалось.
 
Lightning
а как в union указывать отсутствие повторений?

Dacascas
вот почему нельзя сразу написать исходную задачу, а вместо неё рассказывать какие-то сказки, путаясь в терминах?

по случайным выборкам в форуме полно тем, воспользуйся поиском
 
Именно, сгенерить разные оффсеты. Но при выборке, например, 10 записей из 10000, какова вероятность, что среди десяти подряд идущих случайных чисел будут повторяющееся?

P.S. На Хабре был хороший пост про выборку нескольких случайных записей. Там предлагалось сделать для этого хранимую процедуру, которая делает запрос с UNION-ами.
 
ну, короче, ничего нового по сравнению с несколькими последовательными запросами.
 
так и есть :) Я не знаю на сколько UNION быстрее нескольких последовательных запросов и насколько эта разница важна в контексте данного топика :)
 
Re: Быстрая выборка

Можно тупо отсортировать по случайной, равномерно распределенной величине. Например по количеству секунд во времени создания записи со случайным офсетом.
 
всем спасибо.
Можно воспользоваться union или where id in
но что делать когда нужно вывести отсортированых по id (которые не начинаеюся с 0 и постоянно добавляются записи и удаляются разные записи тоесть есть дырки в записях) несколько rand записей.
Тоесть нужно одновременно проверить что у выбраных записях нету дырок и все с наименшей загрузкой.???

Вариант отсортировать по другой записи возможен но нужно вводить дополнительные параметры в таблицу.
 
ты определись, что тебе надо. " отсортированых по id " ИЛИ "несколько rand"
а то эти две задачи как бы противоречат друг другу.
если речь только о том, чтобы после получения случайных записей отсортировать их о Id - это можно будет сделать и в пхп

но по-моему, тебе нужно не это, а включить голову и прочесть, наконец, ответы.
 
Dacascas
where id in - нельзя!!! Сам же пишешь, что можно попасть на несуществующий id.
 
Сформулируй исходную задачу. Для чего все это нужно.
 
Сверху