5

我有一个每秒接收大约 50 次点击的 Web 应用程序,每次点击时,我都会在中央 SQL Server 数据库中插入大约 10 条记录。大约每 3 秒一次,我为单个入站连接插入 5000 多行。

目前我有一个以 XML 作为参数的存储过程。我从我的 XML 中插入一个行字段不匹配的主表,然后用我的 XML 中的值更新整个表。

无论如何,操作并不慢,但我真的很想知道最好的方法。我在 SQL Server 2005 上运行,所以我没有 MERGE 操作。

4

1 回答 1

6

我会先做 UPDATE 否则你会更新你刚刚插入的行

SELECT .. INTO #temp FROM (shredXML)

BEGIN TRAN

UPDATE ... FROM WHERE (matches using #temp)

INSERT ... SELECT ... FROM #temp WHERE NOT EXISTS

COMMIT

我还考虑将 XML 更改为临时表并使用 SQLBulkCopy。我们发现这比一般解析数百行以上的 XML 更有效。如果您无法更改此设置,那么您是否首先将 XML 分解为临时表?

于 2011-05-17T12:58:06.847 回答