在我们查询数据的过程中,一直遇到选择集的问题。我们知道,要得到符合某种准则的数据,一般而言有两种不同的手段,一是使用select方法,它返回的是一个指向数据的Cursor对象;另一种是构造选择集(SelectionSet),然后在选择集中再得到Cursor,后者虽然走了弯路,但是在显示的效果上却比前者好,即得到的要素选择集在Map上会呈高亮显示。
我们通过IMap::SelectByShape方法得到过选择集,使用要素图层的IFeatureSelection接口也可以得到选择集,但是这些都仅仅是在“表面”探讨,那么,要素选择集在地理数据库中到底表现为什么东西呢?
SelectionSet对象是程序获得的被选择的行对象集合,这些行只能来自单个表或要素类,但是一个表或者要素类可以产生多个选择集对象。选择集有两种形式,它要么是基于与被选择的行对象的OID集合,要么就是一个实实在在的行对象本身,在后面这种情况下,选择集会提供方法让程序员与在选择集中的行对象进行交互。至于使用何种方式来得到选择集,我们可以使用SelectionType属性来设置。
选择集的类型如果是esriSelectionIDSet,那代表选择集使用的是一个OID集合,这些OID值可能保存在一个物理表中,也可能保存在内存中,这取决于数据源的类型;当它为esriSelectionTypeSnapShot时,它表明选择集使用的是保存在内存中的实际的行对象;如果是esriSelectionTypeHybird,那情况就比较灵活,当选择数量少的时候选择集使用在内存中的行对象,当数量多时则使用OID集合。
使用标识集合(如OID集合)可以表示数目巨大的选择集,它也是程序最常使用的一种方式,当数据源每一次被选择的对象还需要进行查询的时候,这种方式可以保证选择集是动态的,而且在数据源改变的时候自动变化。Snapshot类型选择集数度最快,而且一但选择集构造完成后就不再要求与数据源发生查询,但是它对少量数据是有效的,如果选择的数据多,占用内存大时,它的优势就发挥不出来了;Hybird类型选择集包含了前两者的有点,它可以依据选择数据的大小而自动选用不同的选择方式,但是这个选择数据的大小并不能由程序来控制。
我们通过IMap::SelectByShape方法得到过选择集,使用要素图层的IFeatureSelection接口也可以得到选择集,但是这些都仅仅是在“表面”探讨,那么,要素选择集在地理数据库中到底表现为什么东西呢?
SelectionSet对象是程序获得的被选择的行对象集合,这些行只能来自单个表或要素类,但是一个表或者要素类可以产生多个选择集对象。选择集有两种形式,它要么是基于与被选择的行对象的OID集合,要么就是一个实实在在的行对象本身,在后面这种情况下,选择集会提供方法让程序员与在选择集中的行对象进行交互。至于使用何种方式来得到选择集,我们可以使用SelectionType属性来设置。
选择集的类型如果是esriSelectionIDSet,那代表选择集使用的是一个OID集合,这些OID值可能保存在一个物理表中,也可能保存在内存中,这取决于数据源的类型;当它为esriSelectionTypeSnapShot时,它表明选择集使用的是保存在内存中的实际的行对象;如果是esriSelectionTypeHybird,那情况就比较灵活,当选择数量少的时候选择集使用在内存中的行对象,当数量多时则使用OID集合。
使用标识集合(如OID集合)可以表示数目巨大的选择集,它也是程序最常使用的一种方式,当数据源每一次被选择的对象还需要进行查询的时候,这种方式可以保证选择集是动态的,而且在数据源改变的时候自动变化。Snapshot类型选择集数度最快,而且一但选择集构造完成后就不再要求与数据源发生查询,但是它对少量数据是有效的,如果选择的数据多,占用内存大时,它的优势就发挥不出来了;Hybird类型选择集包含了前两者的有点,它可以依据选择数据的大小而自动选用不同的选择方式,但是这个选择数据的大小并不能由程序来控制。
Tags: GIS
实际上,您可以把索引理解为一种特殊的目录。微软的SQL SERVER提供了两种索引:
聚集索引(clustered index,也称聚类索引、簇集索引)和非聚集索引(nonclustered index,也称非聚类索引、非簇集索引)。下面,我们举例来说明一下聚集索引和非聚集索引的区别:
其实,我们的汉语字典的正文本身就是一个聚集索引。比如,我们要查“安”字,就会很自然地翻开字典的前几页,因为“安”的拼音是“an”,而按照拼音排序汉字的字典是以英文字母“a”开头并以“z”结尾的,那么“安”字就自然地排在字典的前部。如果您翻完了所有以“a”开头的部分仍然找不到这个字,那么就说明您的字典中没有这个字;同样的,如果查“张”字,那您也会将您的字典翻到最后部分,因为“张”的拼音是“zhang”。也就是说,字典的正文部分本身就是一个目录,您不需要再去查其他目录来找到您需要找的内容。
我们把这种正文内容本身就是一种按照一定规则排列的目录称为“聚集索引”。
幻の小屋
|
软件&技术
|