再来一贴,如何提高插入性能

zjh222 2009-09-22 11:47:23

create table TT(ID numeric(10),name char(20),Englist numeric(5,2),physics numeric(5,2));
go
alter proc tpro
as
begin tran
insert into TT(ID,name,Englist,physics) values(3,'张三',89,98);
commit tran


go

go
begin tran
declare @II int;
set @II=1;
while @II<10000
begin
exec tpro;
end;
commit tran
go

select COUNT(*) from TT;

--我的天啦,8分钟还没有完,我只有中止执了....也不知要多久..
--大家有没有更快的办法


...全文
152 点赞 收藏 15
写回复
15 条回复
切换为时间正序
当前发帖距今超过3年,不再开放新的回复
发表回复
lg314 2009-09-22
set nocount on
begin tran
declare @II int;
set @II=1;
while @II<10000
begin
exec tpro;
set @II=@II+1
end;
commit tran
set nocount off
回复
lg314 2009-09-22
begin tran 
insert into TT(ID,name,Englist,physics) values(3,'张三',89,98);
commit tran

这里是begin tran和commit tran是多余的

IF @@TRANCOUNT > 0 COMMIT TRAN
执行几次把没有提交的事务提交上去

set nocount on
begin tran
declare @II int;
set @II=1;
while @II<10000
begin
exec tpro;
end;
commit tran
set nocount off


这样也会快一倍多

回复
zjh222 2009-09-22
这个可用于并发测试吗??呵呵..
回复
zjh222 2009-09-22
[Quote=引用 5 楼 fredrickhu 的回复:]
引用 1 楼 billpu 的回复:
删除索引

...
[/Quote]


go
begin tran --如何事务,不用事务会很慢
declare @II int;
set @II=1;
while @II<10000
begin
exec tpro;
set @II=@II+1;--弄丢了,执行是有的
end;
commit tran
go
回复
lg314 2009-09-22
...
你看看@II有没有自增
回复
sdhdy 2009-09-22
begin tran 
declare @II int;
set @II=1;
while @II<10000
begin
exec tpro;
--add
set @II=@II+1;
end;
commit tran
回复
viva369 2009-09-22

while @II<10000
begin
exec tpro;
set @II = @II + 1
end;

回复
sdhdy 2009-09-22
应该用不了多少时间,你的配置太低了吧?
回复
billpu 2009-09-22
刚刚看了下...你是死循环...计数器永远小于1...
回复
--小F-- 2009-09-22
[Quote=引用 1 楼 billpu 的回复:]
删除索引
[/Quote]
...
回复
zjh222 2009-09-22
[Quote=引用 1 楼 billpu 的回复:]
删除索引
[/Quote]

我没有建索引,只建了个存储过程
回复
soft_wsx 2009-09-22
你电脑有问题吧!我的用了38秒!
回复
SQL77 2009-09-22
晕了,还来,乌龟大侠不是弄了吗
回复
billpu 2009-09-22
删除索引
回复
相关推荐
发帖
疑难问题
创建于2007-09-28

2.1w+

社区成员

MS-SQL Server 疑难问题
申请成为版主
帖子事件
创建了帖子
2009-09-22 11:47
社区公告
暂无公告