【发布时间】:2013-07-24 20:59:52
【问题描述】:
我有一个包含地理数据的 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 latitude = 26.32 AND longitude = 6.23;
如果我在纬度和经度上创建一个索引,它会提高性能吗?
接下来,当我得到这个查询的结果时,我正在使用半正弦公式来查找大圆距离内的对象。
【问题讨论】:
-
当然。它会提高性能。
-
您最好使用 SpatiaLite,它是空间数据的 SQLite 扩展。使用 PostGIS 会更好,但那是完全不同的蠕虫……
-
我添加了纬度/经度索引,性能更好。我会(再次)尝试整合空间元素
标签: java sqlite geospatial