日期:2014-05-16  浏览次数:20530 次

select *与select 所有字段的查询效率比较
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` FROM `dmsp`.`dmsp_dimension_content` LIMIT 0, 1000;
取出所有字段,时间2.250s,网络消耗0.578s
多次查询(改变limit条件避免缓存),时间变化不大。

结论:两者差别几乎可忽略。所以查询所有字段(或者大多数字段)的时候,大可select *来操作。如果某些不需要的字段数据量特别大,还是写清楚字段比较好,因为这样可以减少网络传输。

如果这个表的所有字段组成一个联合索引,那么select 所有字段的效率会提高吗?