进阶 postgis.net 2026-10-09 21:31:24 · 6 阅读

第25章 如何使用空间索引?

如何使用空间索引?

空间索引对提升空间 SQL 查询的性能至关重要!要利用空间索引,需要完成两件事:

创建空间索引; 使用支持空间索引的函数。

创建空间索引时,使用 CREATE INDEX 命令,但需指定 USING GIST 访问方法,例如: CREATE INDEX mytable_geom_x ON mytable USING GIST (geom) 绑定 GIST 访问方法后,几何类型(geometry)的默认索引即为 R-Tree(R 树)。如果遗漏了 USING GIST 部分,系统将生成标准的 PostgreSQL B-Tree(B 树)索引,这并非空间索引,无法加速你的查询。

有一组有限的函数可以借助空间索引作为预过滤器来加速查询,列表如下:

ST_LineCrossingDirection ST_DWithin ST_Touches ST_Intersects ST_Crosses ST_Contains ST_ContainsProperly ST_Within ST_Covers ST_CoveredBy ST_Overlaps ST_DFullyWithin ST_3DDWithin ST_3DDFullyWithin ST_3DIntersects ST_OrderingEquals ST_Equals

因此,空间连接查询可以借助空间关系函数获得索引加速,示例如下: SELECT a.* FROM a WHERE ST_Intersects(a.geom, ST_Point(-126, 45, 4326))

也可以通过空间关系驱动连接操作,示例如下: SELECT a.name, b.id FROM a JOIN b ON ST_Contains(a.geom, b.geom) WHERE a.name = 'Pleasantown'

评论 (0)