ArcSDE vs. Oracle Spatial 12

· 空间索引的性能

1. 空间索引的用处

对于空间数据库进行空间查询的操作一般都有两个阶段,对于Oracle Spatial而言,一个空间查询分为2个步骤,一个称为主过滤(Primary Filter),另外一个称为次过滤(Secondary Filter)。主过滤通过矩形的MBR相交从海量的数据中首先过滤出可能符合空间查询的一小部分数据,然后再用次过滤中具体的空间关系算法来判断这个小的结果集中到底哪些是满足空间关系的。如图 12,在主过滤的过程中,空间索引会被使用到。

image

图 12 Oracle Spatial中空间查询的处理流程

对于ArcSDE来说,原理上也是类似,ArcSDE中有一个函数叫ST_ENVINTERSECTS,这就是通过四角坐标来从海量数据中过滤一个矩形范围内的一小部分数据。对于其它一般的空间操作,比如ST_WITHIN等,只要你的数据建立了空间索引,这个操作也会先通过空间索引找到一个小数据集(相当于ST_ENVINTERSECTS操作,或者说Oracle Spatial中的主过滤),然后再通过具体的“Within”的空间关系算法再查得准确的结果(相当于Oracle Spatial中的次过滤)。当然,如果数据没有空间索引,那么上面的操作就没有空间索引可用,不过ArcSDE也能查到结果,这比Oracle Spatial不建空间索引就不能作空间查询要好一些。

2. 主过滤/ST_ENVINTERSECTS的比较

因此,从上一小节可以知道,空间索引的效率可以通过Oracle Spatial中的“主过滤”和ArcSDE的ST_ENVINTERSECTS的比较得到一个参考的结果。

在Oracle Spatial中,主过滤通过SDO_FILTER操作提供。

后面的比较随后的pdf版本中提供,目前还没测完。

 

 

你可能感兴趣的:(oracle,算法,数据库,filter)