我用的sql server数据库,需要往里插入大概200万的记录,
1.请问如何能提高插入数据的速度,我看到有人说要先删除索引,然后插入,插完再从建索引,还有其他的办法么2.数据库有3列,CellID,ParamID,ParamValue。再插完200万记录后,还需要再插入一小部分记录,不过这些数据要先判断数据表中如果存在CellID,ParamID,就对其ParamValue进行update,
否则insert,请问这种逻辑有没有什么办法可以提高效率呢,
1.请问如何能提高插入数据的速度,我看到有人说要先删除索引,然后插入,插完再从建索引,还有其他的办法么2.数据库有3列,CellID,ParamID,ParamValue。再插完200万记录后,还需要再插入一小部分记录,不过这些数据要先判断数据表中如果存在CellID,ParamID,就对其ParamValue进行update,
否则insert,请问这种逻辑有没有什么办法可以提高效率呢,
第二种改用存储过程INSERT会快很多
@CELLID INT,
@PARAMID INT,
@PARAMVALUE VARCHAR(50),
....
)
AS
BEGIN
IF EXISTS(SELECT 1 FROM TB WHERE CELLID=@CELLID AND @CELLID=CELLID)
INSERT INTO ....
ELSE
UPDATE....END
假设一小部分记录在tb2表,原表为tb1
1).
update tb1 set ParamValue = tb2.ParamValue from tb1 , tb2 where tb1.CellID = tb2.CellID and tb2.ParamID and tb2.ParamID
2).
insert into tb1(CellID,ParamID,ParamValue) select CellID,ParamID,ParamValue from tb2 where not exists(select 1 from tb1 where CellID = tb2.CellID and ParamID and tb2.ParamID)
2判断一下,再插入就好了
否则insert,请问这种逻辑有没有什么办法可以提高效率呢,
-----------------------------------------------------------------
一小部分记录可以分成两步,
1,插入CellID,ParamID这两列不存在的记录。
2.将其余记录做更新操作而不是插入(两个表通过CellID,ParamID进行连接,就可以更新了)
以用户指定的格式复制一个数据文件至数据库表或视图中。如果要装载的数据与表中已存在的数据相比数量较大,在执行大容量复制操作之前删除表的索引会提高大容量复制速度。 反之,如果要装载的数据与表中已存在的数据相比数量较小,则不必删除索引,因为重建索引的时间可能比执行大容量复制操作的时间要长。