Я использую следующий запрос, чтобы получить случайную строку в MySql. И, я думаю, это будет намного быстрее, чем ORDER BY RAND()
, поскольку он просто возвращает строку после случайного подсчета строк и не требует упорядочения строк.Оптимизация моего пользовательского запроса RAND()
SELECT COUNT(ID) FROM TABLE_NAME
!-- GENERATE A RANDOM NUMBER BETWEEN 0 and COUNT(ID)-1 --!
SELECT x FROM TABLE_NAME LIMIT RANDOM_NUMBER,1
Но, мне нужно знать, можно ли каким-либо образом оптимизировать его и есть более быстрый метод.
Я также был бы признателен, если я могу объединить 2 запросов в LIMIT
не поддерживает такие подзапросов (как я знаю).
EDIT- Способ, которым работает мой запрос, не случайным образом генерирует какой-либо ID. Но вместо этого он генерирует случайное число. между 0 и итогом нет. строк. И тогда я использую это. как смещение, чтобы получить строку рядом с этим случайным числом.
Ваша техника будет в лучшем случае средней в два раза быстрее, чем обычная 'ORDER BY RAND() LIMIT1'. Это связано с тем, что нет возможности перепрыгнуть N строк в таблицу. –