2、频繁使用插入、修改、删除等DML操作的数据表不宜使用索引。

  针对表的插入、修改、删除等操作非常频繁时,将会降低数据库性能。因为每次的动作都可能会触发两倍甚至两倍以上的成本来完成索引操作。

  说明:对ArcSDE也是一样,如果你的数据现在是频繁的进行编辑,可以将空间索引进行删除,这样编辑的数据不会耗费资源来维护索引对象,这样效率也会有一定的提高。不过上面的这些话还在于灵活掌握索引再实施。

  这是为什么说,每次感觉速度慢,esri工程师会简单的给用户说,重建索引即可,其实这句话背后经历了这么多复杂的过程,但是软件不是这样么,尽管有多么复杂的原理,公式等,暴露给用户的是一个简单的操作!理解这些知识,对感兴趣的用户或者对性能优化比较注重的用户有所帮助吧!

  可以通过如下的方法创建空间索引:

  ● 对于格网索引,可在 ArcCatalog 的要素类属性 对话框的“索引”选项卡上单击添加。请参阅设置空间索引。

  ● 使用 sdelayer 管理命令实用工具。请参阅《ArcSDE 管理命令参考》。

  ● 使用 SQL。请参阅为包含 ST_Geometry 列的表创建空间索引。

  ● 使用 ArcSDE C 或 Java 应用程序编程接口 (API)。请参阅地理数据库资源中心。

  ● 使用 sdelayer 命令的 load_only_io 和 normal_io 操作,将要素类从只加载 I/O 模式切换回正常 I/O 模式。每次将要素类从 LOAD_ONLY_IO 模式切换为 NORMAL_IO 模式时,ArcSDE 都会自动删除并重新创建由 ArcSDE 创建的所有空间索引。

  -----------------------------------------------------------------------------------------

  关于索取的其他知识,不是说建立索引可以加快查询速度,让所有字段都建立索引,建立索引也是有一定的代价的,以下只针对属性索引的创建:

  ● 创建索引和维护索引要耗费时间,这种时间随着数据 量的增加而增加。

  ● 索引需要占物理空间,除了数据表占数据空间之外,每一个索引还要占一定的物理空间,如果要建立聚簇索引,那么需要的空间会更大。

  ● 当对表中的数据进行增加、删除和修改的时候,索引也要动态的维护,这样降低了数据的维护速度。

  同样,对于有些列不应该创建索引。一般来说,不应该创建索引的的这些列具有下列特点:

  ● 对于那些在查询中很少使用或者参考的列不应该创建索引。这是因 为,既然这些列很少使用到,因此有索引或者无索引,并不能提高查询速度。相反,由于增加了索引,反而降低了系统的维护速度和增大了空间需求。

  ● 对于那 些只有很少数据值的列也不应该增加索引。这是因为,由于这些列的取值很少,例如人事表的性别列,在查询的结果中,结果集的数据行占了表中数据行的很大比 例,即需要在表中搜索的数据行的比例很大。增加索引,并不能明显加快检索速度。

  ● 对于那些定义为text, image和bit数据类型的列不应该增加索引。这是因为,这些列的数据量要么相当大,要么取值很少。

  ● 当修改性能远远大于检索性能时,不应该创建索引。这是因为,修改性能和检索性能是互相矛盾的。当增加索引时,会提高检索性能,但是会降低修改性能。当减少索引时,会提高修改性能,降低检索性能。因 此,当修改性能远远大于检索性能时,不应该创建索引。