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

Dacascas

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

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

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

Помогити, а то голова кругом идет...
 

baev

‹°°¬•
Команда форума

Dacascas

Новичок
В смысле "и".
Выборка к примеру:
есть несколько строк текста в таблице

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

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

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

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

За второй ответ спасибо.
 

Lightning

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

Mr_Max

Первый класс. Зимние каникулы ^_^
Команда форума
В поиск по сайту
100500 раз обсуждалось.
 

Фанат

oncle terrible
Команда форума
Lightning
а как в union указывать отсутствие повторений?

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

по случайным выборкам в форуме полно тем, воспользуйся поиском
 

Lightning

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

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

Фанат

oncle terrible
Команда форума
ну, короче, ничего нового по сравнению с несколькими последовательными запросами.
 

Lightning

Трудоголик
так и есть :) Я не знаю на сколько UNION быстрее нескольких последовательных запросов и насколько эта разница важна в контексте данного топика :)
 

prolis

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

Можно тупо отсортировать по случайной, равномерно распределенной величине. Например по количеству секунд во времени создания записи со случайным офсетом.
 

Dacascas

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

Вариант отсортировать по другой записи возможен но нужно вводить дополнительные параметры в таблицу.
 

Фанат

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

но по-моему, тебе нужно не это, а включить голову и прочесть, наконец, ответы.
 

Lightning

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

Dacascas

Новичок
Нет, можно когда уже знаешь точно о существовании id в таблице
 

Фанат

oncle terrible
Команда форума
Сформулируй исходную задачу. Для чего все это нужно.
 
Сверху