常用的sql优化(入门级,简单易懂)

1、例如查询连续id的数据,使用between不要使用in
使用in可能会导致全表扫描
例如查询user表中id为1-5的数据
别用:select * from user where id in (1,2,3,4,5)
用:select * from user where id between 1 and 5

2、查询需要的数据时只查出自己需要的字段,不要查询整张表的所有字段
例如查询user表的id和name
别用:select * from user
用:select id,name from user

3、需要分组过滤的数据能先过滤的话就先过滤再分组(where+group by),而不要先分组再过滤(group by+having)
例如将user表中的所有年龄大于20岁的用户分组
别用:select * from user group by sex having age>20
用:select * from user where age >20 group by sex

4、模糊查询关键字能更精确就更精确
例如查询user表中姓名叫陈阿宇的用户所有信息
别用:select * from user like ‘%阿%’ ‘阿’字前有%会导致全表扫描
用: select * from user like ‘陈阿%’

5、查询数据总条数时能使用count(a),a 尽量使用主键或者1以及创建了索引的列主键默认创建索引

6、对于一些频繁过滤(where)、分组(group by)、排序(desc:降序、asc:升序)、搜索(select)、用于主外键连接的列,适当创建索引

7、需要用到嵌套查询时,尽量使用左连接(left join)或者右连接(right join)来代替子查询

8、创建数据库的数据表时,按照业务需要适当反数据库第三范式(第三范式:每列和主键需要有直接关系,不能间接关系)

9、创建数据库的数据表时,字段能用数字型的就不要用字符型的,引擎在处理查询和连接时会逐个比较字符串中每一个字符,而对于数字型而言只需要比较一次就够了

10、创建数据库的数据表时,能使用varchar的字段就不要使用char

 
以上就是我个人常使用的sql优化了,以后学习得更深入接触到的东西更多之后会继续更新,希望能对你有所帮助

猜你喜欢

转载自blog.csdn.net/C2667378040/article/details/106910025
今日推荐