文章取自http://blog.csdn.net/u014305991/article/details/44964171
MySQL 5.1.37
表記錄數41,547,002,即4000w行
使用遠程客戶端取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
FROMdmsp
.dmsp_dimension_content
LIMIT 0, 1000;
取出所有字段,時間2.250s,網絡消耗0.578s
多次查詢(改變limit條件避免緩存),時間變化不大。
結論:兩者差別幾乎可忽略。所以查詢所有字段(或者大多數字段)的時候,大可select *來操作。如果某些不需要的字段數據量特別大,還是寫清楚字段比較好,因為這樣可以減少網絡傳輸。
(1)SELECT *,需要數據庫先 Query Table Metadata For Columns,一定程度上為數據庫增加了負擔。
但是實際上,兩者效率差別不大。
(2)考慮到今后的擴展性。
因為程序里面你需要使用到的列畢竟是確定的, SELECT * 只是減少了一句 SQL String 的長度,並不能減少其他地方的代碼。
綜上:除平時練習使用,其他情況都不推薦使用 SELECT * FROM xxx