前言
Sql语句优化是Mysql性能优化的一部分,我们看下常见Sql语句优化及注意的有哪些。
一、查询SQL尽量不要使用select *,而是具体字段
1. 反例
SELECT * FROM user;
2. 正例
SELECT id,name,tel FROM user
说明:
- 只返回需要的字段,节省资源,减少网络开销。
- 可能用到覆盖索引,减少回表,提高查询效率。
二、避免在where子句中使用 or 来连接
1. 反例
SELECT * FROM user WHERE id = 1 OR name = "song"
2、正例
(1)使用union all
SELECT * FROM user WHERE id = 1 UNION ALL SELECT * FROM user WHERE name = "song"
(2) 或者分开两条sql写
SELECT * FROM user WHERE id = 1 SELECT * FROM user WHERE name = "song"
说明:
- 使用
or
可能会使索引失效,从而导致全表扫描。 - 对于
or
没有索引的name
这种情况,假设它走了id
的索引,但是走到name
查询条件时,它还得全表扫描。 - 也就是说整个过程需要三步:全表扫描+索引扫描+合并。如果它一开始就走全表扫描,直接一遍扫描就搞定。
- 虽然
mysql
是有优化器的,出于效率与成本考虑,遇到or
条件,索引还是可能失效的。
标签:语句,name,SQL,索引,user,Mysql,WHERE,id,SELECT From: https://www.cnblogs.com/songgj/p/16994157.html