空间索引和 ST_Geometry

根据所用 DBMS 的不同,用于 ST_Geometry 的空间索引的实现方式也不同。IBM Informix Spatial DataBlade 模块和 PostgreSQL 中的 ST_Geometry 应用使用 R 树索引来对空间数据进行索引。Oracle 和 DB2 中的 ST_Geometry 使用空间格网索引。

可以通过如下的方法创建空间索引:

当对包含 ST_Geometry 列的表发出空间关系查询时,仅在执行某些空间关系函数时使用空间索引来加速查询进程。这些函数在何时使用空间索引?中列出。

Oracle

使用 ST_Geometry 存储方式创建的具有空间索引的要素类会在 Oracle 数据库中创建另一个表。此空间索引表的名称为 S<n>_IDX$,其中 <n> 是该表的几何索引值。可通过查询 SDE.ST_GEOMETRY_COLUMNS 表来获取该值。此空间索引表被创建为 Oracle 索引组织表 (IOT)。通过企业管理器查看时,ST_Geometry 属性的空间索引显示为 A<n>_IX1。值 <n> 表示存储在 LAYERS 表中的 LAYER_ID 值。

在 S<n>_IDX$ 表中还创建了另外两个索引:S<n>$_IX1 和 S<n>$_IX2。可以通过更改创建要素类时指定的 DBTUNE 配置关键字中的 S_STORAGE 参数来指定这些索引在 DBMS 中的存储方式。

如果创建包含 ST_Geometry 列的分区业务表,您还可能希望对空间索引进行分区。分区方法有如下两种:全局和局部。默认情况下,将对已分区业务表创建全局分区索引。要创建局部分区索引,则必须在 CREATE INDEX 语句的末尾添加关键字 LOCAL。为使 ArcGIS 能够在空间索引的 CREATE INDEX 语句末尾添加 LOCAL,请在 DEFAULTS 关键字下将 ST_INDEX_PARTITION_LOCAL 设置为 TRUE。

PostgreSQL

在 PostgreSQL 中,R 树索引使用通用搜索树 (GiST) 索引的结构实现。有关 GiST 索引的信息,请参阅 PostgreSQL 8.3 文档的第 51 章。

IBM DB2 和 Informix

有关 DB2 中空间索引的信息,请参阅由 DB2 Spatial Extender 生成的空间索引。有关 Informix 中空间索引的信息,请参阅Informix 中地理数据库 (geodatabase) 内的空间索引

相关主题


3/7/2012