1,UPDATA,DELETE,INSERT这三类DML运行时会使用到索引吗?
2,书上说在进行大批量事务处理时最好先删除一些索引或暂时disable它们,这是为什么?希望能详细全面一些,有加分
谢谢

解决方案 »

  1.   

    因为会每插入一条纪录会更新索引,速度会下降,可以全部插入后再更新索引
    UPDATE我觉得应该没什么影响
      

  2.   

    当所DML的表数据量比较大时(比如上百万、上千万的),如果是大批量的的执行update、delete、Insert操作,如果索引太多,在一定程度上会降低速度。
    但必须确保update或delete时,条件项必须要有索引。当所DML的表数据量比较小时,影响不大。
      

  3.   

    大批量事务处理时才考虑删除一些索引或暂时disable它们,正常的操作不需要。目的是提供dml的效率,举个例子,要插入1000万的数据到表中,如果没有index的话,数据insert后就完成了,否则还要维护index。update和delete也是一样,如果1000万的表,要更新或者delete 900万,反正都要full scan了,不如删除后再重新创建index来的快。
      

  4.   

    大批量事务处理时才考虑删除一些索引或暂时disable它们,正常的操作不需要。 目的是提供dml的效率,举个例子,要插入1000万的数据到表中,如果没有index的话,数据insert后就完成了,否则还要维护index。 update和delete也是一样,如果1000万的表,要更新或者delete 900万,反正都要full scan了,不如删除后再重新创建index来的快。 3楼不错
      

  5.   

    当所DML的表数据量比较大时(比如上百万、上千万的),如果是大批量的的执行update、delete、Insert操作,如果索引太多,在一定程度上会降低速度。 
    但必须确保update或delete时,条件项必须要有索引。