「元ここギコ!」さんのFacebook書込みに触発されて、GeoHash の仕様が掲載されているWikipediaのページを久しぶりにじっくり見てみた。 GeoHashとは、緯度経度の位置情報を表すコードで、短い文字列で場所を表すことができるため、Twitterのジオタグなどに使われてることが多い。 この種の位置情報コードは、現在私が把握しているだけで全世界に24種類ある。私自身も位置情報コードを発明して特許を取ったことがある。(このブログのタイトル「ロカポ」はその位置情報コードの名前。現在はロカポv2にあたる LP-Address を無償公開)。それ以来、位置情報コードの情報は常に収集していて、「位置情報コード百科 - GEOCODE Encyclopedia」というドキュメントをつくったり、大学で論文として発表したりしている。 で、本題に戻ると、GeoHashのエンコーディングの手順が
1週間程前かな?退社間際にやったSQL調整がどうしてもうまくいかず、100ms程度だった検索速度が空間検索条件を外すと爆速になったので、十分な確認もなく短絡して、Twitterで「mysqlの空間検索遅過ぎる!使えねー」と呟いてしまいました。 明日になればGeoHashとかquadkey*1のような一次元空間コード検索に変更してやるぞと。 が、翌日取り急ぎ検索条件をquadkeyに変更してやっても、特に速くならない。 あり?と思ってよくよくさらにチェックしてやると、複合検索のプロファイルの見方を間違えてて、テーブル間のリレーションキーで非空間テーブル=>空間テーブルの向きは主キーでリンクされてたけど、その逆はリレーションキーにインデックスを張ってなかったので、オプティマイザの選択が先に非空間テーブルの検索条件=>フィルタされたレコードに対し逐次空間検索、となっていたのが遅い原因でした。 非
リリース、障害情報などのサービスのお知らせ
最新の人気エントリーの配信
処理を実行中です
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く