Howto: 当使用ST_Geometry空间索引时,如何优化查询和存储

文章编号 : 33341
软件: ArcSDE 9.2, 9.3, 9.3.1
操作系统: N/A
已邀请:

EsriSupport

赞同来自:

摘要: 以下的教程讲述了如何在使用ST_Geometry时,通过减少每个使用空间索引(ST_Spatial_index)的空间查询读取的索引块的数量,来提高查询的效率。降低SQL语句的逻辑和物理I/O操作会改进查询次数并改进服务器上的资源,以提供未来的可扩展性。

内容: Oracle命令 ALTER TABLE <表名> SHRINK SPACE COMPACT CASCADE 会通过把数据压缩到尽量少的数据块中,将存储一张表或索引所需要的数据块数量降低。这个命令需要在使用自动段管理的表空间中的缩减段( shrunk segment )。

要缩减一个空间索引,请按以下步骤:
1. 找出代表空间索引的域索引表名
以下的例子展示了如何获取一个名叫'PARCELS'的表的空间索引标识符,和如何执行ALTER TABLE命令来缩减空间索引。应以数据库拥有着身份执行以下步骤。

SQL> SELECT 'S'||index_id||'_IDX$' AS DOMAIN_INDEX FROM sde.st_geometry_index WHERE owner = USER AND table_name = 'PARCELS'; DOMAIN_INDEX ------------ S15_IDX$ SQL> ALTER TABLE s15_idx$ SHRINK SPACE COMPACT CASCADE; Table altered.
2. 检查在执行shrink命令后的leaf_blocks数量。这有利于检查此命令的效果。
例如:

执行之前:

SQL> SELECT index_name, leaf_blocks FROM user_indexes WHERE table_name = 'S15_IDX$'; INDEX_NAME LEAF_BLOCKS -------------------- ----------- S15$_IX2 18427 S15$_IX1 27465
执行之后:

SQL> SELECT index_name, leaf_blocks FROM user_indexes WHERE table_name = 'S15_IDX$'; INDEX_NAME LEAF_BLOCKS -------------------- ----------- S15$_IX1 13973 S15$_IX2 17406
3. 在缩减空间索引后更新表统计信息

SQL> exec dbms_stats.gather_table_stats(user,'parcels');




创建时间:2007-07-24
最近更新: 2009-10-27


原文链接
http://support.esrichina.com.c ... .html

要回复问题请先登录注册