Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sql-server/22.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/url/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql server 更快的SQL性能_Sql Server - Fatal编程技术网

Sql server 更快的SQL性能

Sql server 更快的SQL性能,sql-server,Sql Server,我必须在30个表中为每个表插入一条记录。来自其他系统的数据。我必须第一次在表中插入数据,然后如果发生任何更新,那么我需要在SQL Server中更新表。我有两个选择: a) 我可以检查各个表行的时间戳,如果时间戳更大,则进行更新 b) 每次我都可以通过stateway删除记录并插入数据 在SQL Server数据库中,哪一个更快?有没有其他方法可以解决这个问题?我通常喜欢直接插入再重新插入。我发现它更干净,更容易编码。但是,如果这种情况经常发生,并且您担心并发性问题,那么您最好选择选项1 另外,

我必须在30个表中为每个表插入一条记录。来自其他系统的数据。我必须第一次在表中插入数据,然后如果发生任何更新,那么我需要在SQL Server中更新表。我有两个选择:

a) 我可以检查各个表行的时间戳,如果时间戳更大,则进行更新

b) 每次我都可以通过stateway删除记录并插入数据


在SQL Server数据库中,哪一个更快?有没有其他方法可以解决这个问题?

我通常喜欢直接插入再重新插入。我发现它更干净,更容易编码。但是,如果这种情况经常发生,并且您担心并发性问题,那么您最好选择选项1


另外,另一个要考虑的因素是时间戳检查失败的频率(不需要插入或更新)。如果99%的数据是冗余/过时的数据,那么不管怎样,您最好选择选项1。

如果您不更改记录的索引字段,则尝试先更新然后插入的策略通常比删除/插入更快,因为您不会强制数据库更新一组索引信息

如果使用Sql2008+,则应该使用merge命令,因为它可以清晰地处理更新/插入条件

增加


我还应该补充的是,您知道很少更新(即90%插入)中的使用模式,您可能会遇到这样的情况,即删除/插入比更新/插入更快,这取决于很多细节。不管怎样,如果使用2008+,“合并”显然是赢家。

您是否需要担心30个单行插入的性能?没什么。这种情况多久发生一次?为什么有30张桌子?太多了。这种情况多久发生一次?只有在频率较高的情况下,性能才是一个问题。