首页 新闻 会员 周边 捐助

sqlserver insert delete 很慢?

0
悬赏园豆:10 [已关闭问题]

各位大俠:

        我在操作sqlserver時,對單表進行delete 和insert 不知道爲什麽很慢,select 卻沒有問題,有哪位大俠知道,告訴下原因,謝謝!      

soarfe的主页 soarfe | 初学一级 | 园豆:146
提问于:2010-08-03 08:30
< >
分享
其他回答(2)
0

在sql查询器还是程序?

执行时可以查看内存,是不是飙到最高了。如果是程序,调试一下,不一定是执行中的慢,也许是程序处理的问题。

Astar | 园豆:40805 (高人七级) | 2010-08-03 10:24
是sql查詢分析器中執行的,表沒有建立索引,delete會根據資料的數量影響執行的速度,但Insert應該和資料的數量沒有關係呀!但Insert也很慢,我對該表建立了索引后delete和Insert速度都很快,具體原因還是不清楚是什麽造成的!
支持(0) 反对(0) soarfe | 园豆:146 (初学一级) | 2010-08-03 11:12
@soarfe:只是普通的insert吗,delete在where的时候,条件字段是否是索引字段。
支持(0) 反对(0) Astar | 园豆:40805 (高人七级) | 2010-08-03 11:25
只是普通的Insert,表開始沒有建立索引,如下: delete from pfs.pubuser.pfs_userrights where ownerid=174981 and datakind='fire' and ap_id=17921 insert into pfs.pubuser.pfs_userrights (ap_id,ownerid,dataid,datakind,ownerkind) values (17921,174981,'218M','fire',0) 後來我建立了索引: create index idx_xxx on pfs.pubuser.pfs_userrights(ap_id,ownerid) 執行delete insert就很快
支持(0) 反对(0) soarfe | 园豆:146 (初学一级) | 2010-08-03 16:40
@soarfe:如果insert里有自动生成的列,比如ID,会有影响。
支持(0) 反对(0) Astar | 园豆:40805 (高人七级) | 2010-08-03 16:52
創建表的語句如下: CREATE TABLE [PubUser].[Pfs_UserRights]( [RightID] [int] IDENTITY(1,1) NOT NULL, [Ap_Id] [decimal](12, 0) NULL, [OwnerID] [decimal](12, 0) NULL, [DataID] [varchar](40) NULL, [DataKind] [varchar](20) NULL, [OwnerKind] [char](1) NULL, [Extend1] [nvarchar](128) NULL, [Extend2] [nvarchar](256) NULL ) ON [PRIMARY] GO SET ANSI_PADDING OFF 能告訴我具體的影響在那嗎?謝謝!
支持(0) 反对(0) soarfe | 园豆:146 (初学一级) | 2010-08-04 08:44
0

insert 应该是最快的,应该是你的.net代码写的有问题吧,建议贴代码出来看看

jowo | 园豆:2834 (老鸟四级) | 2010-08-03 14:04
.net代碼如下:請幫忙查看有什麽問題,謝謝! /// <summary> /// 新增或者修改UserRights /// </summary> /// <param name="list"></param> /// <param name="user_id"></param> /// <returns></returns> public bool InsertOrUpdateUserRights(List<string> list,string user_id) { string sqlstr = @" delete pfs.pubuser.pfs_userrights where ownerid={0} and datakind='fire' and ap_id={1}"; sqlstr = string.Format(sqlstr, user_id, ap_id); if (list.Count > 0) { foreach (string s in list) sqlstr += @" insert into pfs.pubuser.pfs_userrights (ap_id,ownerid,dataid,datakind,ownerkind) values (" + ap_id + "," + user_id + ",'" + s.Trim() + "','fire',0) "; } _help.SqlStr = sqlstr; _help.TypeMethod = ApplyCommandType.Text; return _help.ApplyManageOpeater(); }
支持(0) 反对(0) soarfe | 园豆:146 (初学一级) | 2010-08-03 16:42
不知道怎麼在這裡保持換行的格式,不好看
支持(0) 反对(0) soarfe | 园豆:146 (初学一级) | 2010-08-03 16:43
0

建议:

1.Table有多大

2. 索引有助于Select,对Insert和Delete有影响

3. 整理索引碎片

4.Server的配置

changbluesky | 园豆:854 (小虾三级) | 2010-08-03 16:07
能說的清楚點嗎?謝謝!
支持(0) 反对(0) soarfe | 园豆:146 (初学一级) | 2010-08-03 16:45
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册