1週間程前かな?退社間際にやったSQL調整がどうしてもうまくいかず、100ms程度だった検索速度が空間検索条件を外すと爆速になったので、十分な確認もなく短絡して、Twitterで「mysqlの空間検索遅過ぎる!使えねー」と呟いてしまいました。 明日になればGeoHashとかquadkey*1のような一次元空間コード検索に変更してやるぞと。 が、翌日取り急ぎ検索条件をquadkeyに変更してやっても、特に速くならない。 あり?と思ってよくよくさらにチェックしてやると、複合検索のプロファイルの見方を間違えてて、テーブル間のリレーションキーで非空間テーブル=>空間テーブルの向きは主キーでリンクされてたけど、その逆はリレーションキーにインデックスを張ってなかったので、オプティマイザの選択が先に非空間テーブルの検索条件=>フィルタされたレコードに対し逐次空間検索、となっていたのが遅い原因でした。 非
quadKey方式での近傍検索 概要 地理情報から近傍検索をする方法は様々。 今回はシンプルに文字列検索で近傍検索の絞り込みができるような仕組みについて調査。 他の選択肢 GeoHash 緯度経度のビットを組み合わせて作られる Base32文字列によって構成される(例:57.64911,10.40744 -> u4pruydqqvj) quadKeyの性質 世界地図を分割し、どのエリアにいるかで決まる 4進数文字列で表現される(例:13201301) 20段階の精度で利用ができる(GeoHashより細かいらしい) quadKeyの桁数とレベル数が一致 世界地図を4つに分割したのがレベル1(0,1,2,3)、レベルが1上がると各エリアが同じように4分割(00,01,02,03,10,11...33)される quadKey文字列の先頭は親要素を完全に含んでいる(検索に利用しやすい) 133(1
Pixel Coordinates Having chosen the projection and scale to use at each level of detail, we can convert geographic coordinates into pixel coordinates. Since the map width and height is different at each level, so are the pixel coordinates. The pixel at the upper-left corner of the map always has pixel coordinates (0, 0). The pixel at the lower-right corner of the map has pixel coordinates (width-1
/** * QuadKey. * このQuadKeyは、Microsoftの提唱している、Google地図やBing地図で使われている * 地図画像のタイル配信のインデックス仕様. * http://msdn.microsoft.com/en-us/library/bb259689.aspx * ただし、本来のQuadKeyは文字なのだが、このQuadKeyは、2ビット単位で情報を * 保持しており、数値で扱えるので、文字列での検索と比べて、高速に検索が可能. * * @version 2015/04/03 * @author maachang * @since quadKey * * Copyright (c) 2015 maachang. * This software is released under the MIT License. */ public final class Q
注意 mysqlで空間検索をする場合、InnoDBでは、空間テーブルが作れないため、一次元ハッシュコードによる検索が必要になります。 MyISAMでも問題ない場合は、空間検索速度が速いので空間テーブルの利用を検討してください。 一次元ハッシュコード検索の基本 考え方の基本については、もっとも流行っている一次元ハッシュコードである、GeoHashについてのこちらの記事( http://blog.masuidrive.jp/index.php/2010/01/13/geohash/ )を確認してください。 採用する一次元ハッシュコードの精度レベルいくらのメッシュが、求めようとする緯度で、メッシュの短辺が求めたい検索半径より大きくなるかを調べます。 求めた精度レベルで、検索中心の経緯度のハッシュコードを求めます。 そのハッシュコードの、周辺8つ(自分自身も含めると9つ)のメッシュコードを求めます
リリース、障害情報などのサービスのお知らせ
最新の人気エントリーの配信
処理を実行中です
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く