我为你的专家提供了一个mssql存储过程问题:
我有两个表[table1],它一直检索新的条目 . 然后我有另一个表[table2],我需要将[table1]的内容复制到 .
我需要检查[table2]中是否已经存在某些行,如果是,只需更新[table2]的Update-timestamp,否则将其插入[table2] .
这些表可能相当大,大约有100k条目,所以这是最快的方法吗?
应该注意的是,这是一个简化的想法,因为从[Table1] - > [Table2]复制新内容时会发生更多的数据处理 .
总结一下:如果存在一行[Table1]和[Table2],则更新[Table2]中行的时间戳,否则只需将带有内容的新记录插入[Table1] .
3 回答
这适用于所有版本的SQL Server . MERGE在SQL Server 2008中也是如此 .
如果您有SQL Server 2008,它有一个MERGE命令可以根据需要进行插入或更新 .
鉴于这听起来像ETL过程 . 你考虑过使用SQL Server Integration Services吗?
如果您计划导出/加载/处理丢失的数据,那么这就是我的观点 . 您还可以获得额外的优势,即能够并行运行多个线程,以及更多选项来调整数据吞吐量和服务器内存利用率等 .