索引个数和dml操作的关系

试验

创建四张一样的表

第一张表不建立索引

第二张表建立一个索引

第三张表建立二个索引

第四张表建立三个索引

插入同样多的数据

在每张表中插入10万条记录

用时分别为  3秒 15秒 3分钟  5分钟

因为有了索引,更新记录就要更新索引,就要维护索引那种有序排列的结构,开销很大

上面的插入是有序的插入从1 到1000

如果是无序的插入,效果就更明显。

 

问题  如果要插入大批量的数据时,怎样优化插入时间

解决方法:先把索引失效,然后插入数据,插入完成之后,在让索引生效

 

索引过多对三种更新语句的影响:

一对insert语句的负面影响更大,有百害无一利,只要有索引插入就慢,越多越慢.

二对delete语句来说,有好有坏,在海量数据库定位删除少数记录时,条件列是索引显然是必要的,但是过多列有索引还是会影响明显,

因为其他列的索引也要因此被更新在经常要删除大量数据的时候,危害加剧。

三对update语句的负面影响最小,快速定位少量记录并更新的场景和delete相似,但是具体修改某列时缺少有差别,不会触发其他索引列的维护。

 

 

建索引的时候回加上表级锁。

posted on 2014-06-03 15:23  todayiwillgo  阅读(253)  评论(0)    收藏  举报

导航