Sql-Server
Select Column names 或 Select * 哪個更快?
我正在編寫一個儲存過程,它連接 3 個表,每個表有兩個列。
查詢 1:
SELECT * FROM [dbo].[PersonInfo] P join [dbo].[Receipt] R ON P.Id = R.PersonInfo_Id join [dbo].[Goods] G ON P.Id = G.PersonInfo_Id
查詢 2:
SELECT P.Id, R.Date, G.Clothes FROM [dbo].[PersonInfo] P join [dbo].[Receipt] R ON P.Id = R.PersonInfo_Id join [dbo].[Goods] G ON P.Id = G.PersonInfo_Id
我想知道在查詢性能方面,上述哪個查詢將更快地返回表列 Select * 或 Select(指定所有列名)?
兩者都不是“更快” - 如果您從每個表中選擇每一列,並且您不需要每個表中的每一列,那麼
SELECT *
和SELECT every,single,column
都同樣浪費。@ypercube 提出了一個很好的觀點:你加入的列顯然是多餘的,所以一旦你從輸出列表中刪除了其中一個列,你已經至少在某些方面提高了性能(也許不是讀取,取決於表結構和選擇的索引,但網路和表示層的工作肯定更少)。沒關係,如果您在輸出中提取最終不需要的 LOB 數據、計算列、CLR 類型等。但實際上,即使您確實需要表中的所有列,也會發生更糟糕的事情
SELECT *
,而且它們不涉及性能。請閱讀全文: