在 Oracle 和 DB2 中不得不手动计算空间格网索引大小时,本主题中提供的指导原则可帮助提升空间查询性能。
格网像元大小会影响空间索引表的大小。设置空间索引意味着平衡像元大小 - 较小的像元意味着每个形状占有更多的像元,这需要在空间索引表中添加更多的条目。
如果正在使用第三方客户端应用程序,则这些应用程序和空间数据配置文件可能因系统而异。在这些情况下,可能需要通过尝试不同的像元大小和不同格网等级配置来试验空间索引。
- 考虑需要的格网等级数量,并且记住数据库优化器会在每个格网等级扫描一次空间索引表。通常,尽管将几何均匀分布在多个格网等级的做法可以最少化空间索引条目数量,但对于一个要素类来说仅使用一个格网等级仍然是最佳的解决方案。
- 为纯点类型要素类使用一个格网等级并考虑将像元放大。空间查询处理点几何的速度通常快于其他几何类型。
- 监视空间索引。如果频繁更改数据,则很难调整空间索引。调整取决于空间数据的结构。空间数据发生改变时定期访问空间索引。
- 使空间索引基于应用程序。将空间索引格网像元大小与应用程序窗口的范围相匹配。通过这种方式,应用程序可以查看空间索引表中的确切条目。这有助于合理制定空间索引表的大小并减少处理量,因为必须根据要素表计算的候选要素 ID 变得更少。
- 对于未知或可变的应用程序窗口,首先使用三倍于平均要素范围大小的像元大小定义一个格网等级。查询业务表以获取平均要素大小。以下 SQL 语句可获取 Oracle 中要素服务的平均要素大小:(其中 <N> 是空间表,shape 是 <N> 表的几何列。)这样的空间索引配置可最少化空间索引表中的行数同时保持索引的良好性能,因为可能其中的大多数要素仅被少于一个或两个的格网像元引用。
SELECT (AVG(SDE.ST_MAXX(shape) – SDE.ST_MINX(shape)) + AVG(SDE.ST_MAXY(shape) – SDE.ST_MINY(shape))) / 2 from <N>;
- 围绕空间数据类别(例如类型、几何大小和分布)设计空间表。有时,使用这些类别的精心设计的要素类可显著提升空间查询性能。
如果通过 ArcGIS for Desktop 创建数据,则会为您计算空间格网索引。
有关 DB2 Spatial Extender 格网索引的详细信息,请参阅《IBM DB2 Spatial Extender 和 Geodetic Extender 用户指南和参考》。