大家谈谈索引在进行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操作,会产生大量的回退、日志,并且不会回收高水位,自然会产生性能影响
------解决方案--------------------我是这样理解的,索引是可以加快数据的查询速度,但这是以消耗一定的资源为代价的。如果在数据经常变化的列上建立索引,会给维护的索引带来很大的负担。