我總是從SQL專家那裏聽到,在SELECT語句中使用'*'符號效率不高,而且最好列出所有字段名稱。SELECT * - 利弊
但是對於我個人而言,當向表中添加新字段並相應地更新所有存儲過程時,我並不覺得它有效。
那麼使用'*'有什麼優點和缺點?
謝謝。
我總是從SQL專家那裏聽到,在SELECT語句中使用'*'符號效率不高,而且最好列出所有字段名稱。SELECT * - 利弊
但是對於我個人而言,當向表中添加新字段並相應地更新所有存儲過程時,我並不覺得它有效。
那麼使用'*'有什麼優點和缺點?
謝謝。
一般來說,使用SELECT *
不是一個好主意。
優點:
SELECT *
缺點:
VARBINARY
列。你只需要在一個地方這個數據的單個記錄 - 使用SELECT *
你可以最終返回每10行2MB,你不需要SELECT *
要添加到缺點,查詢處理器必須首先找出特定表中存在哪些列。 – vee
@vinodadhikary - 爲什麼比驗證包含所有列名的明確列列表更有效?我想這實際上可能會稍微少一些工作,因爲它只需要檢索所有列元數據而不是單獨驗證每個元數據。 –
@MartinSmith,野生字符'*'必須在所有字段驗證之前展開。所以如果'select'包含一個被添加到field_list的'*'。就性能而言,優化是最小的,但保存了額外的函數調用。我無法真正找到甲骨文的MySQL源代碼版本(我並沒有真正費心去挖掘它),但在github中發現了'twitter'版本。在498行和554行之間查看'https:// github.com/twitter/mysql/blob/master /','sql/sql_select.cc'' JOIN :: prepare',並在7846行查看'setup_wild', SQL/sql_base.cc'。 – vee
優點:
select *
缺點:
可能重複[可以選擇\ *使用永遠是有道理的嗎?](多表時http://stackoverflow.com/questions/3635781/can-select-usage-ever-be-justified) –