2011-12-16 22 views
2

SQLで最適化されたバウンディングボックススタイルのクエリに関するドキュメントに誰かがリンクできますか?SQLバウンディングボックスの最適化

最も基本的なレベルでは、x、yフロート列で構成される表を想像して、特定の(x1、x2)、(y1、y2)範囲内の行を表に問い合せます。これを行うクエリは簡単ですが、このクエリが効率的に動作するようにインデックスを定義する最良の方法は何ですか?

単純にxとyの列にインデックスを作成することもできますし、xとyの両方の列にインデックスを作成することもできますが、これを理由にSQLインデックスを作成する方法について十分な知識はありません。

私はMySQLを使用しています。

答えて

1

2dスペースを1d問題に縮小するには、スペースを埋めるカーブが最適です。これはフラクタルのように構築され、基本的には表面のグレーコードトラバーサルです。インデックスを計算する代わりに、ハフマンコードに似たクアッドツリーパスプレフィックスフリーキーを組み合わせることができます。次に、単純な文字列クエリを使用してボックスを取得できます。 MySqlには空間インデックスの拡張機能がありますが、どのカーブを使用するのか分かりません。おそらく単純なzカーブまたはpeanoカーブです。あなたはNick空間インデックスquadtreeヒルベルト曲線ブログを見てみることができます。単調n進グレイコードはまた非常に興味深いことがあります。