论坛首页 综合技术论坛

select *与select 所有字段的查询效率比较

浏览 11086 次
精华帖 (0) :: 良好帖 (0) :: 新手帖 (2) :: 隐藏帖 (0)
作者 正文
   发表时间:2011-07-15  
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 所有字段的效率会提高吗?
   发表时间:2011-08-30  
怎么没有直接 select pname from table 的比较
0 请登录后投票
   发表时间:2011-08-30  
这个表的所有字段组成一个联合索引,如果索引起效,那么确实可以提高读效率。但是别忘了还有写效率要兼顾呢。这种全部字段都做索引的情况,一般只有数据仓库才做。因为数据库仓库除了固定时间的写处理,基本上都是读。
0 请登录后投票
论坛首页 综合技术版

跳转论坛:
Global site tag (gtag.js) - Google Analytics