您好,登錄后才能下訂單哦!
這篇文章主要介紹select * 和 select所有字段的區別有哪些,文中介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們一定要看完!
MySQL 5.1.37
表記錄數 41,547,002,即 4000+w 行。
使用遠程客戶端取 1000 條數據,統計時間:
SELECT * FROM dmsp.dmsp_dimension_content LIMIT 0, 1000;
時間 2.218s,網絡消耗 0.547s 。
SELECT id, appid, aop, t, uid, sid, pid, pname, bid, bname, ptype, sm, sv, bt, national, area, ov FROM dmsp.dmsp_dimension_content LIMIT 0, 1000;
取出所有字段,時間 2.250s,網絡消耗 0.578s 。
多次查詢(改變 limit 條件避免緩存),時間變化不大。
結論:兩者差別幾乎可忽略。所以查詢所有字段(或者大多數字段)的時候,大可 select * 來操作。如果某些不需要的字段數據量特別大,還是寫清楚字段比較好,因為這樣可以減少網絡傳輸。
(1)減少數據的負擔。
SELECT *,需要數據庫先 Query Table Metadata For Columns,一定程度上為數據庫增加了負擔(影響網絡傳輸的性能),但是實際上,兩者效率差別不大。
(2)考慮到今后的擴展性。
因為程序里面你需要使用到的列畢竟是確定的, SELECT * 只是減少了一句 SQL String 的長度,并不能減少其他地方的代碼。
(3)索引問題
select abc from table; 和 select * from table;
在 abc 字段有索引的情況下,mysql 是可以不用讀 data,直接使用 index 里面的值就返回結果的。但是一旦用了 select *,就會有其他列需要讀取,這時在讀完 index 以后還需要去讀 data 才會返回結果,這樣就造成了額外的性能開銷。
綜上:除平時練習使用,其他情況都不推薦使用 SELECT * FROM XXX 。
以上是“select * 和 select所有字段的區別有哪些”這篇文章的所有內容,感謝各位的閱讀!希望分享的內容對大家有幫助,更多相關知識,歡迎關注億速云行業資訊頻道!
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。