2016-09-26 104 views
0

我正在使用Azure SQL數據庫。 如果我在Building表中有150K條記錄。 Residental列爲bit。 記錄的一半有Residental = 1。 在我的情況下,這兩個查詢中的哪一個在性能方面更好?SQL UPDATE查詢性能

UPDATE p.Building 
SET Residental = 1 
WHERE References > 100 

UPDATE p.Building 
SET Residental = 1 
WHERE References > 100 
AND Residental <> 1 

UPDATE:

這是探查的結果。首先是更好的我猜?如果所有記錄都有Residental = 10?這會影響分析的結果?我試圖執行測試但分析器結果幾乎相同。

enter image description here

+1

我刪除了不兼容的數據庫標籤。請用您實際使用的數據庫標記問題。 –

+0

我想象第二個是最快的。將有更少的更新,如果Residental索引,將有更少的讀取 –

+0

這是會經常發生還是隻發生一次? – n8wrl

回答

2

編輯

現在你已經發布你的解釋輸出,兩件事情:

  • 貌似你沒有任何東西的指標,你的DBMS正在使用。如果我是你,我會在「參考」字段和「住宅」字段中添加一個索引,然後重新運行你的分析。
  • 對於第二個查詢,您可以在兩個字段上添加多列索引,這可能是您表現最好的選擇。
  • 你的「Clustered Index Scan」應該改變,告訴你它正在使用你的新索引。

下面是關於索引的一個很好的解釋,但你可以只是作弊並添加推薦的,你應該很好。

How does database indexing work?

原來的答案

這兩個疑問的是,在我的情況下性能方面更好?

排序的答案,沒有辦法告訴您提供的信息。您需要查看RDBMS將用於執行查詢的計劃。你沒有說哪個數據庫,所以這裏是MySQL的文檔:

http://dev.mysql.com/doc/refman/5.7/en/explain.html

這主要取決於指標,統計和數據庫供應商,但你可以通過生成解釋查詢的所有信息。發佈兩個查詢的解釋結果,你會得到答案。

截至目前的答案是這取決於

+0

謝謝你的詳細解答! – AsValeO