Для вашего решения вы все равно можете заказать свои записи, но если вам не нужно обновлять записи именно в этом порядке, я имею в виду, что он может быть почти на 98 процентов упорядочен или что-то вроде этого в зависимости от размера ваших записей. Вы можете попробовать ниже решение выбрать ваши записи немного случайно
Решение:
Запрос ниже полезен, но в этом случае, если ваша таблица большая, я только что попробовал и увидел, что вы определенно столкнулись с проблемой производительности в этом запросе.
SELECT * FROM (SELECT * FROM таблицы ORDER BY dbms_random.value), ГДЕ rownum = 1
Так что, если вы установите rownum, как показано ниже, вы можете обойти проблему с производительностью. Увеличивая rownum, вы можете уменьшить возможности.
ВЫБРАТЬ * ИЗ
(ВЫБРАТЬ
Я бы
FROM table_name tkn1,
(ВЫБРАТЬ
Я бы,
ROWNUM rnum
FROM table_name
ГДЕ
PROCS_DT является нулевым
упорядочить по PRTY desc, CRET_DT) результат
ГДЕ tkn1.id = result.id
AND result.rnum <= 1000 ORDER BY dbms_random.value)
ГДЕ РОУНУМ <= 10 </p>
после обновления строк после их выбора. Если вы не можете обновить, это означает, что другая транзакция уже использовала его. Затем Вам следует попытаться получить новую строку и обновить ее статус. Кстати, получить одну и ту же строку двумя разными транзакциями можно за 0,001, поскольку rownum - 1000.