検索プログラマのメモ帳

壁にぶつかったら検索で調べるプログラマのちょっと遅れたメモ帳。たまに自分で挑戦する。

Skip to: Content | Sidebar | Footer

ランダムにレコードを取得する。order by RAND()の高速化

2 9月, 2009 (14:16) | mysql | By: admin

アプリケーションでランダムな数字を作って、そのIDのレコードを取得する方法ではなく、

SQLだけでやってみたい

order by RAND() limit 1  これで、できるようです。
order by RAND()は遅くなるので、注意が必要です。

そこで、idでランダムに取得するには、
select id,name from table1 order by RAND() limit 5
ではなく、
select id,name from
(select id from table1 order by RAND()) as rnd
left outer join table1 on rnd.id = table1.id
limit 5
とする。
先にインデックスのついたidで単純にランダムに並び替え、そこに情報を付加するという考え方だと思います。










Write a comment