1、查询SQL尽量不要使⽤select *,⽽是select
具体字段。
- 反例⼦:
- select * from employee;
- 正例⼦:
- select id,name from employee;
理由:
只取需要的字段,节省资源、减少⽹络开销。 select * 进⾏查询时,很可能就不
会使⽤到覆盖索引了,就会造成回表查询。
2、如果知道查询结果只有⼀条或者只要最⼤/最⼩⼀条记录,
建议⽤limit 1
假设现在有employee员⼯表,要找出⼀个名字叫jay的⼈.
CREATE TABLE `employee` (
`id` int(11) NOT NULL,
`name` varchar(255) DEFAULT NULL,
`age` int(11) DEFAULT NULL,
`date` datetime DEFAULT NULL,
`sex` int(1) DEFAULT NULL,
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
反例:
select id,name from employee where name='jay'
正例
select id,name from employee where name='jay' limit 1;
理由:
加上limit 1后,只要找到了对应的⼀条记录,就不会继续向下扫描了,效率将会⼤⼤
提⾼。 当然,如果name是唯⼀索引的话,是不必要加上limit 1了,因为limit的
存在主要就是为了防⽌全表扫描,从⽽提⾼性能,如果⼀个语句本身可以预知不
⽤全表扫描,有没有limit ,性能的差别并不⼤。