我有一个相当大的 SQLite 数据库来存储一些地理数据。我不能使用 GIS 扩展,而且我也希望一切都可以与其他数据库一起使用。
我的表结构如下:
tbl(float fromLon, float fromLat, float toLon, float toLat, binary binaryData)
我在数据库中存储了一些二进制数据(某物的多边形),并以 fromLon、fromLat -> toLon、toLat 的形式存储它的边界框。
接下来我有一些查询,比如“给我这个区域内的所有二进制数据(多边形)(reqLlon1,reqLat1)-(reqLon2,reqLat2)”。一个示例查询是:
SELECT binaryData
FROM tbl WHERE
(reqLon1 < toLon) AND
(reqLat1 < toLat) AND
(reqLon2 > fromLon) AND
(reqLat2 > fromLat)
问题是,我似乎无法找到正确的索引来加快速度.. 一个简单的索引,比如
idx1(fromLon,fromLat,toLon,toLat)
行不通。我用 MySQL(相同的布局,相同的索引)尝试了同样的事情,它声明(解释 select ..)它只使用了索引长度的一半..
有人可以给我一个提示索引应该是什么样子吗?或者它可能是,这是不可能的?