Бърз и лесен начин алернатива на rand()

Hous

Registered
Понеже знам,че ако таблицата е голяма и order by rand() не е много добра идея,се чудя дали някой може да предложи метод (лесен) който да е доста по-бърз,намерих няколко вариянта но се оказа,че ако имам празни id-та ,тоест такива който съм имал и изтрил в последствие може също да се появят като резултат...
другия който видях е:
Код:
SELECT name
  FROM random AS r1 JOIN
       (SELECT (RAND() *
                     (SELECT MAX(id)
                        FROM random)) AS id)
        AS r2
 WHERE r1.id >= r2.id
 ORDER BY r1.id ASC
 LIMIT 1;
но не мога да разбера дали няма да има проблем и с него.Лично аз не знам как да проверя query time и за това се допитвам до вас.
10x in advance!
 
PHP:
SELECT * FROM `table` WHERE id >= (SELECT FLOOR( MAX(id) * RAND()) FROM `table` ) ORDER BY id LIMIT 1;

Ето това е доста по - бързо, ползвал съм го преди.
 

Горе