Oracle的优化器在建立执行计划的时候如何计算st_spatial_index的成本

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

EsriSupport

赞同来自:

Oracle的优化器在建立执行计划的时候如何计算st_spatial_index的成本?
当Oracle的优化器解析一个包含空间操作符(如st_envintersects,st_intersects,st_contains,st_within,等等)的SQL语句时。优化器会调用ArcSDE的st_domain_stats类型来返回使用空间索引的CPU和I/O的成本代价。 当优化器调用函数来计算成本时,会使用预先估计出来的选择性,该选择性是在前一步利用st_domain_stats作为输入参数计算出来的。 St_domain_type类型查询sde.st_geometry_index表来获得空间索引的统计信息。 使用输入的选择性值和域索引的统计信息,可以利用下面的计算出CPU和I/O的消耗。 cpu cost = (dbms_odci.estimate_cpu_units(.00005) * 1000) *
((selectivity/100) * (number_rows - number_nulls))
io cost = index_blevel + CEIL(number_leaf_blocks * (selectivity/100)) +
CEIL(clustering_factor * (selectivity/100))
Number_rows的值为表所包含的记录数,number_nulls_equals等于表中的st_geometry属性值为NULL的记录数。Index_blevel是空间索引的深度,number_leaf_blocks等于空间索引叶节点所占有的块数, cluster_factor代表索引相对与表的聚蔟因子。
Oracle优化器利用st_domain_stats类型计算出来的代价来决定空间索引的代价比全表扫描的代价高还是低。
全表扫描的代价是所有操作的基准线。
更多的信息可以查看oracle官方文档中的dbms_odci包的相关信息。

原贴地址:http://resources.arcgis.com/co ... 32600
文章编号:
相关产品及版本: 平台:N/A 
技术文章类型:FAQ
创建时间:2007年2月2日
最后修改时间:2007年11月10日
题目: 
问题:Oracle的优化器在建立执行计划的时候如何计算st_spatial_index的成本
解答:



创建时间:2010-11-25
最近更新:2010-11-25


原文链接
http://support.esrichina.com.cn/2010/1125/848.html

要回复问题请先登录注册