溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點(diǎn)擊 登錄注冊 即表示同意《億速云用戶服務(wù)條款》

select * 和 select所有字段的區(qū)別有哪些

發(fā)布時間:2021-11-06 09:03:39 來源:億速云 閱讀:1008 作者:小新 欄目:MySQL數(shù)據(jù)庫

這篇文章主要介紹select * 和 select所有字段的區(qū)別有哪些,文中介紹的非常詳細(xì),具有一定的參考價值,感興趣的小伙伴們一定要看完!

MySQL 5.1.37

表記錄數(shù) 41,547,002,即 4000+w 行。

使用遠(yuǎn)程客戶端取 1000 條數(shù)據(jù),統(tǒng)計時間:

SELECT * FROM dmsp.dmsp_dimension_content LIMIT 0, 1000;

時間 2.218s,網(wǎng)絡(luò)消耗 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,網(wǎng)絡(luò)消耗 0.578s 。

多次查詢(改變 limit 條件避免緩存),時間變化不大。

結(jié)論:兩者差別幾乎可忽略。所以查詢所有字段(或者大多數(shù)字段)的時候,大可 select * 來操作。如果某些不需要的字段數(shù)據(jù)量特別大,還是寫清楚字段比較好,因?yàn)檫@樣可以減少網(wǎng)絡(luò)傳輸。

(1)減少數(shù)據(jù)的負(fù)擔(dān)。

SELECT *,需要數(shù)據(jù)庫先 Query Table Metadata For Columns,一定程度上為數(shù)據(jù)庫增加了負(fù)擔(dān)(影響網(wǎng)絡(luò)傳輸?shù)男阅埽?,但是?shí)際上,兩者效率差別不大。

(2)考慮到今后的擴(kuò)展性。

因?yàn)槌绦蚶锩婺阈枰褂玫降牧挟吘故谴_定的, SELECT * 只是減少了一句 SQL String 的長度,并不能減少其他地方的代碼。

(3)索引問題

select abc from table; 和 select * from table;

在 abc 字段有索引的情況下,mysql 是可以不用讀 data,直接使用 index 里面的值就返回結(jié)果的。但是一旦用了 select *,就會有其他列需要讀取,這時在讀完 index 以后還需要去讀 data 才會返回結(jié)果,這樣就造成了額外的性能開銷。

綜上:除平時練習(xí)使用,其他情況都不推薦使用 SELECT * FROM XXX 。

以上是“select * 和 select所有字段的區(qū)別有哪些”這篇文章的所有內(nèi)容,感謝各位的閱讀!希望分享的內(nèi)容對大家有幫助,更多相關(guān)知識,歡迎關(guān)注億速云行業(yè)資訊頻道!

向AI問一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進(jìn)行舉報,并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI