创建空间索引时,需要提供以下信息:
- 索引的名称
- 包含索引定义依据的空间列的表名称
- 索引定义依据的空间列名称
- 网格大小(仅适用于使用网格索引的数据库,例如 Oracle 或 Db2)
以下是在每种受支持的数据库中为 ST_Geometry 列创建索引的示例。
- 打开 SQL 编辑器并连接到数据库。
- 对于 Oracle、PostgreSQL、Db2 以及 Informix,使用 CREATE INDEX 语句创建空间索引。对于 SQLite,使用 CreateSpatialIndex 函数。
- Oracle
CREATE INDEX sa_idx ON sensitive_areas(zone) INDEXTYPE IS sde.st_spatial_index PARAMETERS('st_grids=1,3,0 st_srid=4326'); CREATE INDEX hs_idx ON hazardous_sites(location) INDEXTYPE IS sde.st_spatial_index PARAMETERS('st_grids=1,0,0 st_srid=4326');
- PostgreSQL
CREATE INDEX sa_idx ON sensitive_areas USING gist(zone st_geometry_ops); CREATE INDEX hs_idx ON hazardous_sites USING gist(location st_geometry_ops);
- Db2
CREATE INDEX sa_idx ON sensitive_areas(zone) EXTEND USING db2gse.spatial_index (1.0, 3.0, 0.0) CREATE INDEX hs_idx ON hazardous_sites(location) EXTEND USING db2gse.spatial_index (1.0, 0.0, 0.0)
- Informix
CREATE INDEX sa_ix ON sensitive_areas (zone ST_Geometry_ops) USING RTREE; CREATE INDEX hs_ix ON hazardous_sites (location ST_Geometry_ops) USING RTREE;
- SQLite
SELECT CreateSpatialIndex('mydatabase','sensitive_areas','zone','rtreexy'); SELECT CreateSpatialIndex('mydatabase','hazardous_sites','location','rtreexy');
- Oracle