mysql

MySQLで指定した緯度経度から半径nメートル内検索っぽいのを実現するSQL

MySQL4.1以降で空間情報を扱う機能が使えるけど、指定した緯度経度から半径nメートル以内の検索が出来ないのが難点です。 かなり大雑把なやり方で半径nメートル検索のやり方を考えてみました。まず最初に緯度経度の情報を持ったテーブルを作成。 CREATE TABL…

SQL_CALC_FOUND_ROWSの謎

SQL_CALC_FOUND_ROWSを使うと速いよーって話を見かけたけど、なぜか相当遅くなる。。。 外すと速いんだけど、何だろうか。 JOINしまくりなせいかと思ったけど、 SELECT * FROM user WHERE status = '1' LIMIT 0, 20; SELECT SQL_CALC_FOUND_ROWS * FROM user…

わけわからん

SQL_CALC_FOUND_ROWSをつけてEXPLAINするとUsing filesortが出現する。。。 外すと消えるんだけど、なんで???

わかった

http://ml.php.gr.jp/pipermail/php-users/2005-January/024616.html前々から悩まされていた、主キーが勝手にインクリメントされる原因はこれか?! INT型の主キーはシーケンス扱いですか。。。

updateメソッドでフィールドが更新されない

ユニークに設定したフィールドは変更されないみたい。 ユニークなんだから変更するなよってことなのだろうか。 インデックスに変更したら無事更新された。 お上の意向に沿うとしょっぱい設計になってしまうのは俺の頭がよろしくないからなんだろう。

サブクエリを使ったJOIN

結合するテーブルにサブクエリを指定すると遅いかも。 実行順序を要確認。

脱Using File Sort

*マニュアルから抜粋 http://dev.mysql.com/doc/refman/4.1/ja/order-by-optimisation.html 複数のキーに対して ORDER BY を実行する場合。 SELECT * FROM t1 ORDER BY key1,key2 連続しないキー部分に対して ORDER BY を実行する場合。 SELECT * FROM t1 W…