select * 和select 所有字段的区别

本文通过实验对比了在MySQL中使用SELECT*与指定字段查询的性能差异,在4000万行的大数据集下,两者的实际执行时间相近,表明SELECT*在多数情况下是可行的,但在意网络传输时间和资源消耗时应考虑明确列出所需字段。

文章取自http://blog.youkuaiyun.com/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 idappidaoptuidsidpidpnamebidbnameptypesmsvbtnationalareaov 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

 

转载于:https://www.cnblogs.com/shuaiandjun/p/7239135.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值