WEB开发网
开发学院数据库DB2 DB2 Spatial Extender 性能调优(2) 阅读

DB2 Spatial Extender 性能调优(2)

 2007-06-01 16:21:34 来源:WEB开发网   
核心提示: 清单 15. 使用空间索引的语法规则SELECT ...FROM <user_table>WHEREST_Intersects(<indexed_shape_column>, ...) = 1@SELECT ...FROM <user_table>WHE

清单 15. 使用空间索引的语法规则

SELECT ...
FROM  <user_table>
WHERE ST_Intersects(<indexed_shape_column>, ...) = 1@
SELECT ...
FROM  <user_table>
WHERE ST_Distance(..., <indexed_shape_column>) < <some_distance>@

如果所有条件都符合,同时也符合简单的语法规则,那么还不能保证可以使用空间网格索引来满足查询。DB2 优化器计算不同的访问计划,并试图找出总执行成本最低的计划。为检查在查询时是否真正使用了一个空间网格索引,应该查看一下访问计划。可以通过 db2expln 命令行工具,或者在 DB2 Control Center 中右键单击数据库并选择 Explain SQL 选项来收集访问计划。不管使用哪种方法,都可以生成和显示访问计划。图 3 描绘了我们在本文前面多次使用的查询的访问计划。如果计划包括对扩展索引的一个扫描,您将发现 EISCAN(在图 3 中高亮显示)。此外,您将在 EISCAN 下面发现网格索引的名称。

图 3. 带有网格索引扫描的空间查询访问计划

前面我们解释过,DB2 优化器不完全知道空间网格索引的细节。而且,优化器很难判断那样的索引扫描的成本和选择性。DB2 开发小组目前选择的解决方案使用户可以提供对空间谓词选择性的估计。为此,可以在 WHERE 子句中将关键字 SELECTIVITY 放在谓词的后面,后面带一个 0 到 1 之间的对选择性的估计值。这个值越低,优化器就越有可能选择扫描网格索引。清单 16 给出了一个查询例子,在这个查询中,向优化器提示空间谓词只有很少的符合条件的行。

上一页  1 2 3 4 5 6 7 8 9  下一页

Tags:DB Spatial Extender

编辑录入:爽爽 [复制链接] [打 印]
赞助商链接