くわこのpermission denied.

WEBエンジニアの僕がぶつかった技術的な問題や発見

SQLでランダムに抽出

ランダムに20件のデータを抽出するには

SELECT * FROM {table名} ORDER BY RAND() LIMIT 20;

で書ける。
ランダム関数はMySQLではRAND()でPostgresではRANDOM()で書ける。

けど先輩に聞いた話だと、SQLのランダムは遅いらしいので、普通にPHPなどにランダムを書いてそれを実行した方がいいらしいです。

追記
調べたら * を使っているのがRAND()の遅い原因らしい。
MySQLでSQLのみを使用してランダム取得を劇的に早くする方法 - 僕のススメ。