现在有A,B两表,二者结构一样另外有C表, 这三个表中有三个相同的字段MsgId,Status,Errcode现在需要操作的是:将A表中的数据移到B表中,删除相应A表中的数据;同时,根据MsgId,同步更新C表中Status,Errcode这两个字段我现在就是常规做法,如
insert into B(字段。) select top 1000 * from A where id >@laseID //@laseID为每次查询A表的最大ID
delete from A where id<laseID //删除A表中的记录updata C set Status=@Status where MsgId=@MsgID //更新c表中Status,Errcode两字段的内容
updata C set Errcode=@Errcode where MsgId=@MsgID
可是我发现这样的效率不是很高,而且由于还有其他程序对数据库操作,有时候会出现锁表的情况
所以想请教大家有没有办法对上述进行优化
谢谢了
insert into B(字段。) select top 1000 * from A where id >@laseID //@laseID为每次查询A表的最大ID
delete from A where id<laseID //删除A表中的记录updata C set Status=@Status where MsgId=@MsgID //更新c表中Status,Errcode两字段的内容
updata C set Errcode=@Errcode where MsgId=@MsgID
可是我发现这样的效率不是很高,而且由于还有其他程序对数据库操作,有时候会出现锁表的情况
所以想请教大家有没有办法对上述进行优化
谢谢了
所以想请教大家有没有办法对上述进行优化
可以考虑为MsgId加索引