选择* vs选择特定颜色

时间:2015-10-27 04:34:16

标签: mysql

如果给定表的所选列数不同,是否存在性能差异,例如我是否使用select *而不是select col1,col2基于索引键或主键?

2 个答案:

答案 0 :(得分:3)

正如McAdam331所述,选择较少的列可能会更快地检索数据。另外需要注意的是,如果您的查询可以直接从索引中获取所需的所有数据,则甚至不会触及该表,并且可以更快地检索数据。

例如:

create table test1 (id int, firstname varchar(50), lastname varchar(50), age int);
create index idx_text1_lastname_age on test1 (lastname, age);

select lastname, age 
from test1 
where lastname = 'Smith' and age between 20 and 30;

在上面的查询中,姓氏和年龄都在索引中可用。因此,MySQL可能根本不接触该表来获取此信息。

select * from test1
where lastname = 'Smith' and age between 20 and 30;

上面的查询将查找索引以查找与where条件匹配的ID,然后查找表以另外获取firstname和id。因此,此查询将比前一个查询花费更多时间。

答案 1 :(得分:1)

尽管如此,它完全取决于您的表所持有的数据量,但是获取所有列而不是所需的列总是被认为是不好的做法。

见:

Why is SELECT * considered harmful?