データベースのあるテーブルから特定のレコードをランダムに抽出する場合

SELECT * FROM tbl  ORDER BY RANDOM() LIMIT 1;

こうするのが一般的だと思いますが、レコード数が多いと遅い。

抽出するレコード数を先に把握できていれば、

$a = mt_rand(1,$num);

SELECT * FROM tbl  WHERE sss=’$a’;

などとすれば、断然早い。

やり方はいろいろある。

その場その場で考えないと、結果は100倍なんてこともざら。