select * 和select 所有字段的区别
Posted 帅S俊
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了select * 和select 所有字段的区别相关的知识,希望对你有一定的参考价值。
文章取自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
以上是关于select * 和select 所有字段的区别的主要内容,如果未能解决你的问题,请参考以下文章
select * 和select 1,select count(*)和select count的区别
联合查询的select选项和单表查询的select选项有啥区别?