MySQLに格納されてるレコードをランダムに取得する

MySQLのあるテーブルに格納されているレコードを、ランダムで1件または数件、取得する必要性が出てきて、RAND()関数を使えば問題ないんじゃね?と思ったけど、EXPLAINしてみたら「Using filesort 」と「Using temporary」という最悪のパターンが出てきた。

とりあえず急ぎで!とか、負荷うんぬんは気にしないとかなら、
「select * from テーブル名 order by RAND() limit 10」
みたいにすれば、そのテーブルから10件をランダムで取ってこれる。

でも正直、「Using filesort 」と「Using temporary」が出るようなSQLは避けたいので別の方法を考えてみた。

Read More...

Tags: MySQL 

TracとMySQLの相性は・・・

TracというBTSがあるんだけど、データの管理にSqliteを使ってるのね。
ただ、自分はSqliteを深く使った事がないし、何か深いとこに手を出そうとするとお手上げになっちゃう。

sqliteについても勉強すりゃいいんだろうけど、正直データベースはメインで使ってるMySQLを深く勉強したいから、Sqliteはとりあえずどういうものなのかくらいだけ知ってれば十分なわけ。

バージョン0.10.4くらいからTracがMySQLに対応したから、全部じゃなくて一部のプロジェクトだけMySQLにしてみて様子を見てたんだけど、なんか調子悪い。

Read More...

Tags: Trac  MySQL