【问题标题】:UPDATE multiple Columns in SSMS/T-SQL:更新 SSMS/T-SQL 中的多个列:
【发布时间】:2013-02-19 14:35:50
【问题描述】:

我有以下场景。

 UPDATE ATable
SET C1 = 'XValue'
WHERE C2 = 'YValue'

UPDATE ATable
SET C3 = 'MValue'
WHERE C4 = 'NValue'

对于性能调整,我可以做些什么来让它们在一个 UPDATE 下运行吗?会更好吗?

谢谢

【问题讨论】:

    标签: sql sql-server sql-server-2008 tsql sql-update


    【解决方案1】:

    您可以使用CASE 运行一次更新

    UPDATE  Atable
    SET     C1 = CASE WHEN c2 = 'yValue' THEN 'xValue' ELSE c1 END,
            C3 = CASE WHEN c4 = 'nvalue' THEN 'mValue' ELSE c3 END
    WHERE   c2 = 'yValue' OR c4 = 'nvalue'
    

    【讨论】:

    • @AndriyM 是的,带有WHERE 子句。
    • 那是 OP 的问题,不是我的问题。
    • @njk 你为什么会这样认为?
    • @KennethFisher 也依赖于索引。
    • 取决于可用的索引。如果 c2c4 被编入索引,您可能会用完整扫描替换 2 个搜索。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-02-22
    • 2012-02-23
    • 2020-12-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-07-19
    相关资源
    最近更新 更多