日期:2014-05-17  浏览次数:21035 次

大家谈谈索引在进行select,update,delete,insert操作时对数据库性能的影响
假如有以下一个student表:

sno       sname     sex      sage
200         张三       男         20
300         李四       男         25
400         王五       女         23    

primary key(sno),数据库默认会在此字段建立聚集索引,我们讨论的提前是select,update,delete,insert操作涉及到数据库的索引字段。

索引是为加速查询,明显在select时可以提高数据库性能;

由于在insert时,数据库需要维护索引,因此会降低数据库性能;

如果update某条记录时,例如
update student set sex='男' where sno=200
这对数据库性能影响是怎样呢?这时需要维护索引么?如果update大范围或整个表的数据时候呢?

如果delete某条记录,例如
delete * from student where sno=200,因为可以迅速定位这条记录,虽然需要维护索引,但性能一定下降么?
如果delete大范围记录或整个表,这时明显是会降低数据库性能的。

大家不妨说说自己的看法! 

------解决方案--------------------
如果where带的条件是索引的话,而且还是主键,那肯定是加快速度的。

其他情况 基本会增加负担。。




------解决方案--------------------

------解决方案--------------------
如果where条件用了索引,速度自然是快。但是update对位图索引消耗的代价比较大
索引对查询有利,但是对DML操作都是有负担的,特别是insert。
delete操作,会产生大量的回退、日志,并且不会回收高水位,自然会产生性能影响
------解决方案--------------------
我是这样理解的,索引是可以加快数据的查询速度,但这是以消耗一定的资源为代价的。如果在数据经常变化的列上建立索引,会给维护的索引带来很大的负担。