如果给定表的所选列数不同,是否存在性能差异,例如我是否使用select *而不是select col1,col2基于索引键或主键?
答案 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)