我有一個複雜的查詢,並且正在從700,000多行中進行選擇。查詢返回varchar
和date
。如果我select
結果運行在2分鐘之內。如果我把它們變成一張新表,這需要大約相同的時間。如果我做了update
這需要1個多小時。T-SQL更新顯着慢於選擇或插入
更新查詢類似於以下內容:
UPDATE
BD
SET
datetext = V1.datetextvalue,
datedate = V1.datevalue
FROM
datatable AS BD
LEFT JOIN
aview1 AS V1
ON BD.indexa = V1.indexa
數據表是:
primaryKey int
indexa int
datetext varchar(max) NULL
datedate datetime NULL
和,除了primaryKey
沒有索引。 inedxa
是一個獨特的價值。
我能做些什麼來加快速度?
UPDATE
以上是實際的查詢的一個粗略的簡化和支撐視圖。執行計劃非常複雜,幾乎不可讀。我的關鍵問題是select
非常快,它的更新速度很慢。
我已經使用查詢來創建一個臨時表 - 這很快。但是,如果我從臨時表更新主表,這同樣慢。
您可以添加執行計劃和'aview1'的定義嗎? –
@ destination-data對不起,意在添加到這個問題。以上是對實際查詢和支持視圖的簡化。執行計劃非常複雜,幾乎無法閱讀。對我來說關鍵的問題是'select'非常快,它的更新很慢 –
懷疑可能是這種情況。沒有表格定義,很難解決問題的根本原因。但@Vicky_Thinking提出的答案可能會幫助您解決這個問題。 –