簡體   English   中英

大量的更新性能

[英]Large numbers of update performance

我在下面有以下更新聲明:

UPDATE [dbo].[mytable]
SET [originaldate] =
CASE
    WHEN [datecolumn1] <= [datecolumn2] THEN datecolumn3 
    ELSE [datecolumn1] 
END

該語句執行了將近5分鍾,執行了260萬行。 有什么方法可以優化此查詢?

我試圖轉換的列date這樣CONVERT(date, [datecolumn2])因為列是datetime ,但仍執行時間是相同的。

另外,我嘗試將所需的列和ID放在臨時表中,但性能仍然很差。

為什么要花時間呢? 這似乎不應該定期執行。

如果是,則應考慮使用計算列

甚至在應用程序邏輯中,根據情況在視圖或SELECT語句中。

由於記錄和事務開銷,更新表中的所有行都需要時間。 您可能會發現更快:

select t.*
into #temp
from mytable;

truncate table mytable;

insert into mytable(col1, . . ., originaldate)
    select . . ., 
           (CASE WHEN [datecolumn1] <= [datecolumn2] THEN datecolumn3 
                 ELSE [datecolumn1] 
            END)
    from #temp;

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM