雑記まみむメモ

雑記、メモ、技法、話題の騒動などを紹介します。

Geometry型にインデックスを張る時に構造の問題でオワタ出来事

現在地(始点)から目的地(終点)までルート情報を格納しているキャッシュテーブルがあって、 現在地の緯度経度から100m以内に始点情報があるかつ目的地の緯度経度から100m以内に終点情報がある場合は そのキャッシュテーブルを使用するっていう仕様だった。(キャッシュデータが取得できない場合はAPIから新しくルートを取得し保存する)

データ量も増えてきてそろそろインデックス貼ろうってなったんです。 キャッシュテーブルの構造を確認したら始点と終点のカラムがGeometry型でした。

Geometry型にインデックスを張る場合は空間インデックス(spatial index)でできるよって事だったんですが、制約がありました。 spatial indexを利用する場合、https://dev.mysql.com/doc/refman/5.6/ja/creating-spatial-indexes.html mysqlバージョンは5.6以上であること MySQLのストレージエンジンがMyISAMであること。 空間インデックスのカラムは、「NOT NULL」とすること。

↑ここまでは順調にテーブルの変更が行えた。 始点、終点の二つのカラムに複合インデックスを張ろうとしたが、 どうやら(spatial index)は複合インデックスできないっぽい ←new

オワタ