Я здесь с неврино. Вы не сказали, почему вам нужно поместить произвольно выбранные четыре имени в один ряд, и почему это должно быть сделано на заднем плане.
Если вы беспокоитесь о производительности, генерируйте случайные целые числа в вашем клиенте (диапазон> = min (pkcol) и <= max (pkcol)), пока не найдете четыре отдельные строки (то есть сущности / имена). Существует вероятность, что с одним из сгенерированных идентификаторов не существует ни одной строки, но на это уходит всего несколько миллисекунд. Принимая этот случайный ключ, вы можете избежать заказа. Подход будет работать быстро даже для таблиц с миллиардами строк. </p>
P.S. (Узнав, что это приложение для iPhone)
Вам нужен один вызов, чтобы получить минимальное и максимальное значения идентификатора (это PK, который использует индекс). Затем вам потребуется как минимум еще один вызов в БД (опять же, с помощью индекса), чтобы получить четыре разных строки, используя ваши случайно сгенерированные значения PK [где ID в (a, b, c, d)]. Максимальное количество вызовов неизвестно. ; сколько будет зависеть от плотности вашей первичной последовательности ключей. Я не верю, что это будет чрезмерное количество операций ввода-вывода, и оно будет значительно менее ресурсоемким, чем порядок в Random () - особенно если в таблице много строк. Вы всегда можете сгенерировать список идентификаторов из 8, 12, 16 идентификаторов в случайном порядке, и ваш клиент будет отбирать только 4 строки, необходимые, если возвращается более 4.
P.P.S. Обычно это дорогостоящее создание соединения с базой данных, и вы не хотите делать это в цикле или чаще, чем вам нужно. Но вы можете открыть соединение, выполнить два или три эффективных выбора, которые возвращают по несколько строк в каждой, а затем закрыть, если вы закончили с поставленной задачей.