select * 与 select fld1, fld2 性能上有区别吗?

作者:vkvi 来源:ITPOW(原创) 日期:2009-4-15

简单一点,假如一个表有三个字段 fld1、fld2、fld3,那么查询语句 select * 与 select fld1、fld2 性能上有区别吗?

您可能会说,这不是废话吗,一个取三个字段,一个取两个字段,容量都不同,性能当然有区别了。

其实除了容量的区别外,还有一个索引利用的问题。假如 fld1 + fld2 加入了索引,而 fld3 没有在索引中,那么:select fld1, fld2 只会在索引中查找;而 select * 是全表扫描。

多说两句:一、前面说的 fld1 + fld2 加入索引是指 fld1 和 fld2 组合起来加入一个索引,并不是两个索引,否则还是会引起全表扫描;二、根据 where 等其他条件的不同,查询时实际走的路径可能和上面的不一样,可能打成平手,不过 select fld1, fld2 至少不会输给 select *。

相关阅读

相关文章