2016-05-04 11 views
0

2つのスペースがあります。 CompanyおよびCars。スペースCompanyには、会社ID(プライマリインデックス)とジオロケーション(ポイント)フィールド(セカンダリインデックス)があります。スペースCarsには車(プライマリインデックス)と会社(この車をレンタルできるすべての会社の配列)があります。特定の車を借りることができる特定の長方形でトップ10の企業を取得する必要があります。これを達成するための最善の解決策は何ですか?Tarantoolの複合SELECT

結果を得るには、空間インデックスと非空間インデックスを組み合わせる必要があります。私の検索計画は、車のタプルを探し、すべての企業(それらの1000があるかもしれない)を取得し、別のスペースで指定された四角形の10をフィルタリングすることです。

私のユースケースはこれに似ています(レンタカーの使用例ではありません)が、すべてのロジックは同じです。自動車よりもはるかに多くの企業が存在します(の企業のの車の300-500k)。これらの情報を得るために私の計画を最適化する方法、使用するインデックスなど表示されているように、selectには空間的および非空間的条件が1つ必要です。

+0

「指定された矩形内の10の企業のうちのトップ10」 - 会社の「トップ」基準は何ですか?インデックス? –

+0

@VasiliySoshnikov結果セットには何百もの結果があります。長方形の中心に最も近い10-50の位置を返します。 – Aleksandar

答えて

0

私は、このタイプのインデックスのための最良の戦略は、お互いに十分離れた別の次元のポイントにあなたの車をマッピングすることだと思います。例えば。あなたの典型的な検索が数平方キロメートル以内であれば、各車の「座標」が最も近い隣の車から少なくとも数十キロ離れていることを確認してください。次に、多次元RTREE索引を検索に使用できます。

+0

私がうまく理解していれば、このような距離を作る方法がないので、車をマッピングするこのアプローチは適切ではありません。企業(と車)はお互いに非常に近く、数百メートルで最大ですが、数十メートルもあります。第二に、1台の車は何百もの企業で借りることができるので、インデックスに3次元を追加する方法はありません。 – Aleksandar

関連する問題