チューニングは大事な

X,Yの各カラム(浮動小数点数で単位はメートル)を持つ、1700万件のデータがあって、ある(X,Y)について、±500mで絞り込んでユークリッド距離をとり、距離が500m以上のものを抜き出し、距離をもとにソートする、というクエリを実行していました。
PostgreSQLと比べて、極端に遅かった。簡易計測したところ、MySQLで0.0883秒、PostgreSQLで0.00761秒。うーんこれはいったい…と思いつつ、とりあえずクエリ自体を見ようとして、簡略化してみてもやはり遅い。困った困ったと思っていたところ、とりあえずチューンみたいなことでもしてみようかと思いたつ。
http://vine-linux.ddo.jp/linux/sql/mycnf.php あたりで、コンフィギュレーションのサンプルがインストールされていることを知る。参照ページでは /usr/share となっていたのですが、FreeBSDPortsから入れたので、たぶん/usr/local/share/mysqlとかあって、そこに入れとくだろうと思って探すと、当たり、でした。
とりあえずmy-huge.confの設定のうち、mysqldに関するものだけ、/etc/my.conf に貼り付けてみる。
で、実行してみると、同じ条件で 0.000194 と、桁が二つほど違いました。