您的位置:首页 >打榜 >

一文解读MySQL查询优化技巧

2023-07-11 00:12:49 哔哩哔哩


(资料图片)

只select用到的字段

select * 会将用不到的字段也查询出来,耗费内存资源。并且不能使用覆盖索引

尽量使用覆盖索引

select column1,column2 from user。如果查询的所有字段都是索引字段,称为覆盖索引,覆盖索引的查询速度与效率是非常高的。

索引使用要合理

不要在重复性过高的字段上使用索引,比如性别这个字段,加上索引的作用不大。根据阿里巴巴开发手册,单表索引要在5个以内。

减少数据库交互次数

之前带实习生的时候,看到过这种代码 ,逻辑没问题,但是磁盘IO次数过多,增加性能消耗

使用limit 1

第一条SQL找到第一条匹配数据之后,继续扫描下一条数据,直到所有数据表的数据扫描一遍。

第二条SQL,加了limit 1之后,找到第一条匹配的数据之后,直接返回结果,停止匹配工作。

limit分页优化

有时候业务要做数据清洗,可能要做分页

原SQL,会查询10020条数据,再抛弃前面的10000条数据,只保留20条。而优化后的SQL,会直接从10001数据查起,取20条数据。

避免左模糊匹配

Union替换OR语句

In与Exists的使用

谨慎使用MySQL查询缓存

查询缓存在MySQL在提出,MySQL8之后又移除。但是大部分公司还在使用,还是有这一项功能的。查询缓存默认是处于关闭状态的,需要手动修改配置文件,重启才能生效。开启查询缓存后,SQL第一次执行后会将数据缓存到内存中,第二次查询直接从内存读取。但是存在以下缺点:

缓存命中率不高,任何对于表结构与数据的更新操作都会让缓存失效。两次查询的SQL需要完全匹配,连大小写都需要一致。根据官方的测试,开启缓存后针对一个表进行简单查询,每次查的都不一样,结果性能降低13%。这个是个用的好,提升性能,用不好会坑自己的方法。

标签:


        
精彩推荐