Sql-Server

Select Column names 或 Select * 哪個更快?

  • May 7, 2020

我正在編寫一個儲存過程,它連接 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 *,而且它們不涉及性能。請閱讀全文:

引用自:https://dba.stackexchange.com/questions/77927