2009-12-08 44 views
1

可能重複:
Select * vs Specifying Column Names
Which is faster/best? SELECT * or SELECT column1, colum2, column3, etc.select * from tablename與select table1之間是否存在性能差異,並從tablename中選擇column1,column2?

select * from tablenameselect column1, column2 from tablename之間的性能差異?

當它是select * from,數據庫翻出的所有字段/它們是大於2個的字段/列的列。第一個查詢會花費更多時間/資源嗎?

+0

重複:http://stackoverflow.com/questions/1771795/select-vs-specifying-column-names/1771856 – 2009-12-08 09:28:44

+0

和另一個:http://stackoverflow.com/questions/65512/which-is -faster-best-select-or-select-column1 -colum2-column3 -etype – 2009-12-08 09:29:29

+0

當我用問題標題搜索前兩個結果討論相同的問題! – 2009-12-08 11:13:12

回答

1

答案是肯定的一般!因爲對於小型數據庫,您看不到性能差異...但是如果您使用不合格的*選擇器作爲速記,則最大的數據庫可能是相關的差異!

一般來說,最好實例化要從中檢索數據的每一列!

我可以建議你閱讀the official document如何優化SELECT等語句!

5

如果你這樣做select * from,有兩個性能問題:

  1. 數據庫有確定哪些列在表
  2. 存在有來自發送更多的數據服務器到客戶端(所有列而不是隻有兩個)
0

有差別,特別是當o其中列是BLOB或(大)TEXT字段。如果你的表只包含兩列,則沒有區別。

0

我檢查過探查器 - 看起來答案是否定的 - 兩個查詢都需要同時執行。 該表具有相對較小的字段,因此結果集不會臃腫,我可能不需要大量數據。 如果您有大量的數據字段你不要在你的結果集需要不包括他​​們在您的查詢

0

雖然這可能不會對運行一次查詢產生很大影響,但如果您通過應用程序使用select *,尤其是在您正在進行連接的情況下使用select *,肯定會返回不需要的數據,那麼您除了開發人員的懶惰之外,沒有其他的理由會明顯放慢系統的運行速度。選擇*應該幾乎從不在生產系統上使用。

0

那麼,我想這將取決於你在談論哪種類型的性能:數據庫或程序員。

說起誰的人不得不收拾寫於

select * from foo 

格式,數據庫查詢,這是一個總的噩夢。數據庫可以並且確實會發生變化,所以現在整潔和整潔的規範化數據庫由於性能原因已經變得非規範化,而且爲抓住所有東西而編寫的草率查詢主機現在正在摧毀更多的數據。

如果你不需要它,不要問它。花點時間,想想那些追隨你並需要處理你的選擇的人。

我在LIMS中仍然有整個部分用於解聚,感謝提醒我。 - 嘆息

相關問題