我有一个包含地理数据的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:
从GEO_OBJECTS选择*,其中纬度为<= 123.4,纬度为>= 26.32,经度<=为12.41,经度为>= 6.23;
如果我建立一个纬度和经度的索引,会不会提高性能?
接下来,当我得到这个查询的结果时,我使用haversine公式在很大的圆周距离内找到对象。
发布于 2013-07-25 07:32:00
普通索引可能有助于某些一维间隔查询,但在两个或多个维度中,您需要为此类查询设计索引,例如R树。
SQLite确实有一个R-树模块,但是它可能没有被编译到您的DB驱动程序中。
您可以考虑SpatiaLite,它是从SQLite派生而来的,具有许多有用的函数(例如计算大圆距离)。
https://stackoverflow.com/questions/17844708
复制相似问题