MySQL

どこで何が効いているかが不明

ということで、いつかやる。

チューニングは大事な

X,Yの各カラム(浮動小数点数で単位はメートル)を持つ、1700万件のデータがあって、ある(X,Y)について、±500mで絞り込んでユークリッド距離をとり、距離が500m以上のものを抜き出し、距離をもとにソートする、というクエリを実行していました。 PostgreSQLと…

極端に遅い

ある点を指定して、 その点を含むポリゴンを選ぶ その点を直交座標系に変換してから500m圏内にある点の集合を選ぶ の二つが必要とします。 PostGISの場合は、 ST_WithIn ST_Transform の二つが威力を発揮してくれますが、MySQLにはそれが無いので、PHPで自作…

UTF-8でやりたい

MySQLを使ってて、なんか変な文字列がまぎれこみました。MySQLをUTF-8になってなかったのが原因かも知れないということで調べてみました。 http://i-am.web777.net/2007/03/mysql_utf8.html によると /etc/my.cnf に次を追加します。 [mysql] default-charac…

データを叩き込むスクリプトで2つのミス

あくまで「雑談」ね。 PostGISからデータをMySQLに叩き込もうとしています。 MySQLの場合には、"INSERT INTO" のSQL文で叩き込むという点とジオメトリ型データはかなり違ってくる(SRIDないし、PostGISのカノニカルな表現とMySQLの表現と違うし)点に注意が必…

Packet too large エラー

国土数値情報(行政区域)をシンプルなポリゴンにダンプして、これをmysqlにたたきこもうとした時、Packet too large エラーが発生。 mysqlから show variables like 'max_allowed_packet'; を実行すると、1Mまでしか認めないという設定でした。 対応するのに …

空間データの先頭に4バイトが付いてきた

無事MySQLに対応したPHPを入れましたと。 とりあえずPHPのあたりで悩んだのですが、それは後にして、最初に悩んだのが、これ。 SELECT AsText(the_geom) FROM t_test; とすると POLYGON ( (0 0,0 100,100 100,100 0,0 0),(10 10,20 10,20 20,10 10 ) ) と出…

まずはPHPの入れなおし

MySQLでやりたいのは、 緯度経度を入力すると、緯度経度で管理されているポリゴンについて、どのポリゴンに属しているかを探す 緯度経度を入力すると、緯度経度で管理されているポイントデータについて、近いところで絞り込んで、近い順にソートして出す と…