gpt4 book ai didi

SQL(服务器)更新性能

转载 作者:行者123 更新时间:2023-12-04 21:48:08 24 4
gpt4 key购买 nike

我有限的 SQL 知识促成了这篇文章!

我有一个运行一系列更新的存储过程。
有 6 个更新语句,可以很好地合并成一个大型更新语句,但我不知道这对性能意味着什么。

表格基础: 6张 table 被击中。其中 3 个永远不会超过大约 5000 条记录,其中 3 个无限增长(目前大约有 1-2 百万条记录,正确索引等)。加入所有表并执行一个大规模更新语句与将其保留为 6 个单独更新相比是否有速度优势?

我正在寻找最有效的方法,即使它会缩短一秒钟。

谢谢。

编辑:

我向大家道歉。我只更新一个表,但验证所有 6 个表的数据以更新一个表。 (即检查 table2.somevalue 是否为空,然后将 table1 中的记录标记为“错误”)

最佳答案

如果可以将它们结合起来,那么是的,你应该将它们结合起来。

如果您要更新单个表中的多个列,则将它们合并为:

UPDATE mytable
SET foo = bar, fizz = buzz, whiz = bang
WHERE zing > 2081

代替

UPDATE mytable SET foo = bar   WHERE zing > 2081
UPDATE mytable SET fizz = buzz WHERE zing > 2081
UPDATE mytable SET whiz = bang WHERE zing > 2081

这几乎是效率的 3 倍,因为它只需要遍历表格一次。

不同表中字段的更新必须分别完成(正如 Cade Roux 提到的,甚至不可能同时进行)。

即使您使用的是复杂连接,一次也只能更新一个表。像这样的东西:

UPDATE AccountHistory
SET LastPurchaseDate = i.PurchaseDate
FROM Account a
INNER JOIN AccountHistory h ON a.AccountID = h.AccountID
INNER JOIN Invoices i ON i.AccountID = a.AccountID
WHERE i.PurchaseDate > '2009-11-30'

即使通过连接访问源数据,此处也仅更改了 AccountHistory。

关于SQL(服务器)更新性能,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1826757/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com