我有一个包含地理数据的SQLite数据库。我的表定义如下:
CREATE TABLE GEO_OBJECTS (ID VARCHAR(30) PRIMARY KEY NOT NULL,
LATITUDE NUMERIC(6,3) NOT NULL,
LONGITUDE NUMERIC(6,3) NOT NULL)
接下来我的软件(Java)正在使用这样一个简单的SQL请求来寻找GEO_OBJECTS:
SELECT * FROM GEO_OBJECTS WHERE纬度< = 123.4 AND纬度> = 26.32 AND经度< = 12.41 AND经度> = 6.23;
如果我在纬度和经度上创建一个INDEX,它会改善表现吗?
接下来,当我得到此查询的结果时,我正在使用半正式公式来查找大圆距离的对象。
答案 0 :(得分:2)
普通索引可能对某些一维间隔查询有所帮助,但在两个或多个维度中,您需要为此类查询设计的索引,例如R树。
SQLite确实有R-tree module,但它可能没有被编译到您的数据库驱动程序中。
您可以考虑SpatiaLite,它源自SQLite并具有许多有用的功能(例如计算大圆距离)。