【发布时间】:2016-12-22 10:36:28
【问题描述】:
windows 上的 postgresql 9.5 + postgis 2.2。 我首先创建一个表:
CREATE TABLE points (
id SERIAL,
ad CHAR(40),
name VARCHAR(200)
);
然后,添加几何字段“geom”:
select addgeometrycolumn('points', 'geom', 4326, 'POINT', 2);
并在其上创建要点索引:
CREATE INDEX points_index_geom ON points USING GIST (geom);
然后,我在表格中插入大约 1,000,000 个点。
我想查询距给定点给定距离内的所有点。 这是我的 sql 代码:
SELECT st_astext(geom) as location FROM points
WHERE st_distance_sphere(
st_geomfromtext('POINT(121.33 31.55)', 4326),
geom) < 6000;
结果是我想要的,但是太慢了。
当我在此代码上explain analyze verbose 时,我发现它不使用 points_index_geom(解释显示 seq 扫描并且没有索引)。
所以我想知道为什么它不使用索引,我应该如何改进?
【问题讨论】:
标签: postgresql indexing postgis