タグ

ブックマーク / llamerada.hatenadiary.org (1)

  • MySQLでの高速な重み付きランダム表示 - llameradaの日記

    東京都で賢い借金返済方法を教えます!では、MySQLに格納したWikipedia記事をランダムに表示している。速度を気にしないなら、 SELECT * FROM docs ORDER BY RAND() LIMIT 10; で良いのだけど、レコード数が多いと遅くて使いものにならない。そこで、記事IDを1から始まる連番になるようにDBに格納している。このようにすると、アプリケーション側でDBに格納されている文書IDが全て分かるので、ランダムに文書IDを10個選択して、その文書IDのレコードを表示することで、ランダム表示を実現している。 例えば、IDは10個選択するRubyコードは、 ids = Array.new(10){ rand(num_docs) + 1 } で、DBに発行するSQLはこんな感じになる。 SELECT * FROM docs where ID in (id1,id2,.

    MySQLでの高速な重み付きランダム表示 - llameradaの日記
    t10471
    t10471 2010/07/20
  • 1