地理データを保存するための非常に大きなSQLiteデータベースがあります。GIS拡張機能を使用できません。また、他のデータベースでもすべてを使用できるようにしたいと思います。
私のテーブル構造は次のとおりです。
tbl(float fromLon, float fromLat, float toLon, float toLat, binary binaryData)
データベース(何かのポリゴン)内にいくつかのバイナリデータを格納し、そのバウンディングボックスをfromLon、fromLat-> toLon、toLatの形式で格納します。
次に、「この領域(reqLlon1、reqLat1)-(reqLon2、reqLat2)内にあるすべてのbinaryData(ポリゴン)を教えてください」のようなクエリがあります。サンプルクエリは次のようになります。
SELECT binaryData
FROM tbl WHERE
(reqLon1 < toLon) AND
(reqLat1 < toLat) AND
(reqLon2 > fromLon) AND
(reqLat2 > fromLat)
問題は、物事をスピードアップするための適切なインデックスを見つけられないようです..のような単純なインデックス
idx1(fromLon,fromLat,toLon,toLat)
うまくいきません。MySQLで同じことを試しました(同じレイアウト、同じインデックス)、それはインデックスの長さの半分しか使用しないと述べています(select ..を説明してください)。
誰かが私にインデックスがうまくいくように見えるべきであるというヒントを与えることができますか?またはそれは不可能である可能性がありますか?