已有数据50万条....
每次批量新增200条...
循环使用for...next
新增使用insert to
0 id int 4 0
0 title nvarchar 100 1
0 guojia nvarchar 50 1
0 huobi nvarchar 50 1
0 bian nvarchar 50 1
0 jiage money 8 1
0 riqi datetime 8 1
0 u_user nvarchar 50 1
问题来了...
现在每新增一批200条就得花个30秒上下 =.=
有什么办法可以提高新增入库的效率呢
这个问题第1个回答:
把log记录模式改成简单!加参数 set nocount on
这个问题第2个回答:
如楼上所说,再去索引
这个问题第3个回答:
SQL code
drop index xx
insert...
create index xx
--or
select * into # from datatable where xxx
insert tb
select * from #
这个问题第4个回答:
如果不能去掉索引的话,重新定时优化索引,减少CHECK约束。
这个问题第5个回答:
看看不插数据时CPU,IO的压力大不大
恢复模式改成SIMPLE对于性能的提升应该是没有的,SQLSERVER还是会去写LOG,只是在碰到CHECKPOINT时会自动截断
如果需要建的索引多而且又不能删除的话,一定要建立主键,不然插入时碰到数据页进行分页维护其他索引的开销会增加
clust索引最好是递增追加形式的,如果必须是无序的,建议降低表的填充因子从而尽可能减少分页
用T-SQL的循环速度非常慢,每次200条的话建议事先写好完整的SCRIPT
这个问题第6个回答:
对的,一定要有主键。另外,尽量减少索引可以相对减少磁盘IO操作