全文共2630字,预计学习时长14分钟
图源:unsplash
我们致力于打造能够较好运行并延续较长一段时间的query(查询)。本文将给出关于优化SQL语句的几点建议,希望能够帮到你。
1.尝试不去用select *来查询SQL,而是选择专用字段。
反例:
select * from employee;
正例:
select id,name fromemployee;
理由:
· 通过只用必要字段进行查询,能够节省资源并减少网络开销。
· 这样做可能不会使用覆盖索引,会导致一个查询返回到表中。
2.如果已知只有一个查询结果,推荐使用limit 1
假设有一张员工表格,想在其中找到一名叫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`) );
反例:
select id,name from employeewhere name='jay';
正例:
select id,name from employeewhere name='jay' limit 1;
理由:添加limit 1后,查找到相应的记录时,便不会继续查找下去,效率会大大提高。
3.尝试避免在 where 子句中使用or来连接条件
创建一个新的用户表格,其有一个常规索引userId,表格结构如下:
CREATE TABLE `user` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`userId` int(11) NOT NULL,
`age` int(11) NOT NULL,
`name` varchar(255) NOT NULL,
PRIMARY KEY (`id`),
KEY `idx_userId` (`userId`) )
现在假设需要查询userid为1或为18岁的用户,使用如下的SQL就会很简单。
反例:
select * from user where userid = 1 or age = 18;
正例:
//se union all
select * from user