增加index可以对查询提高速度,可是也会对DML产生一些影响,说是会变慢一些。
可是究竟会慢多少呢,这里面有什么规律么。
而且如果我建的index不包含着个表的主健与包含主健这两种对DML的影响会有区别么?
还是与最经常执行的DML的where条件的项目有关呢?
比较困惑,希望大家能指点一下,谢谢。

解决方案 »

  1.   

    索引的选择性: 那就是说Table中该Field的所有值中不重复的索引键值的比率。比如, 表中共有100条记录而其中有80个不重复的索引键值,这个索引的选择性就是80/100 = 0.8 。选择性越高, 通过索引键值检索出的记录就越少。如果索引的选择性很低,检索数据就需要大量的索引范围查询操作和ROWID 访问表的操作, 也许会比全表扫描的效率还低。
      

  2.   

    每条索引都会导致insert或者update,delete等dml操作时间增加一倍左右。
      

  3.   

    所以说经常做更新列上是不建议建立索引的
    还是就是索引列做计算的时间也不建议使用索引
    WHERE子句中,如果索引列是函数的一部分,优化器将不使用索引而使用全表扫描。这是一个非常实用的规则,请务必牢记
      

  4.   

    1,而且如果我建的index不包含着个表的主健与包含主健这两种对DML的影响会有区别么?   主键其实就是一种特殊的索引啊,如果自己手动建索引的话,是绝对不会选择主键的也不会带上主键去建索引的。2,还是与最经常执行的DML的where条件的项目有关呢?
       时间会慢一倍,因为除了要insert本条记录之外,还需要insert一条索引记录,所以一个索引就差不多慢了一半吧。