首页 新闻 赞助 找找看

SQL 数据库 中 建立了一些索引 不知道为什么 INSERT UPDATE DELETE 等操作变得很慢

0
悬赏园豆:30 [已解决问题] 解决于 2011-09-28 15:18

隔一段时间就变慢了       

需要重启下 sql服务器    

我不确定 是不是 索引引起的  , 但是没建立索引前是没碰到 这样的问题  ..

请问大家有谁碰到类似问题的吗     谢谢

(数据库 算比较小的   最多的表才几千行     MSSQL)

问题补充:

另外补充

select  的速度是没有任何影响         

hpze2000的主页 hpze2000 | 初学一级 | 园豆:109
提问于:2011-06-08 18:12
< >
分享
最佳答案
0

看下是不是建立索引的字段不合理或者是不必要的索引加得太多了,数据表增加了索引后在做增删改时数据库会重新对索引进行排列,所以建立索引的字段一定要选择好,不然就会影响性能。像你所说的数据库表才几千行数据,其实一般情况下加了主键应该就够了,索引不要滥用

收获园豆:30
七月霄雨 | 小虾三级 |园豆:1282 | 2011-06-08 21:59
您好 , 谢谢您的回复

我想知道 要如何 才能建立索引 后不引起这样的问题呢?

因为有很多表 的 是 键 都是 用到了 另一个表的主键,
是否需要建立主从表 这个我还不会
hpze2000 | 园豆:109 (初学一级) | 2011-06-09 17:23
建立索引的关键我认为有2点,
首先,只为经常需要作为where条件来查询的字段建立索引,因为只有条件字段可能需要借助索引提高查询速度;
其次,尽可能只为顺序增长的字段建立索引,这样的字段在插入删除时很少会导致索引重建,影响较小;
如果你的数据库表内容不多,可以不用加索引,因为数据量少的时候扫描也是很快的,加不加索引影响不大,如果有几十万数据那就没办法必须借助索引了,还有如果你可以看下你的sql语句,如果经常用全表扫描方式搜索某个字段而非利用索引(比如用了in,or之类的几乎不会用到索引),那也不需要为这个字段建立索引,具体的建议你多看下SQL优化方面的资料。
外键约束只用于需要强制约束某个表中内容的范围时使用,一般在程序中就可以做到这点,多数情况不要建立外键约束(我极少使用外键,因为这类表在需要后台处理一些数据的时候比较麻烦,个人不太喜欢用这类约束)
七月霄雨 | 园豆:1282 (小虾三级) | 2011-06-09 21:33
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册