验证是否在ArcObjects的查询中使用了属性索引?


11

作为通过.NET使用ArcObjects编写的较大项目的一部分,我们有一些软件。该软件将数据从一个方案中的多个文件地理数据库迁移并合并到相似但不同方案中的单个文件地理数据库。迁移中的某些步骤涉及查找现有行,并使用其他表中的数据对其进行更新。当目标地理数据库很大时,这可能会变得非常慢,因此我添加了一些多字段属性索引来提高查询/更新性能。

有没有一种方法可以确认查询正在使用新的属性索引,以及可能如何执行查询?

我想我真的在寻找与查询计划等效的工具-与EXPLAIN PLANOracle 类似。

查询直接在使用ArcObjects的文件地理数据库中进行(没有RDBMS后端或SQL)。


您是否在有属性索引和无属性索引的情况下计时了性能?我认为这是了解他们正在发挥作用的唯一途径。
blah238

我现在正在使用各种大小的数据集运行性能测试。得到结果后,我将尝试发布结果。
纳纳特(Gnat)2012年

我在ArcObjects类库中查找了类似于Smallworld Magik的is_size_fast?方法,如果正在使用索引,该方法将返回true,但是我看不到等效的ArcObjects调用。
na 2012年

fGDB是ESRI自己的数据库格式,有一个API可以让您在没有ESRI对象的情况下访问数据,但我怀疑这会给您带来很多麻烦。指标的使用是自动的,无法检测或确认。我同意blah238是唯一可以肯定的方法。“独特”和“升序”选项可能会有很大的不同,但是只有在您完全确定唯一性和/或提升性时,才使用这些选项。
Michael Stimson

@ blah238我想您可以将您的评论变成答案。
PolyGeo

Answers:


1

File Geodatabase是Esri自己的数据库格式,有一个API可以让您在没有ArcObjects的情况下访问数据,但是我怀疑这会给您带来很多麻烦。

索引的使用在数据库级别是自动的,只有使用索引的功能及时才能被检测到或确认。

我同意blah238,唯一可以肯定的方法是在建立索引和不建立索引的情况下运行,并比较时间差。

用于建立索引的“唯一”和“升序”选项可能会有很大的不同,但只有在您完全确定唯一性和/或提升时,才可以使用这些选项,如果数据不合适,则索引要么不建立,要么它确实可以构建,可能会对性能产生不利影响,而不是增强性能。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.