数据库调优
首先在调优之前,必然是因为某一个sql查询慢,影响性能,才会存在调优。
数据库调优之前,测试sql真正的响应时间,需要排除数据库的缓存干扰,因为缓存的存在,并不能真正的显示查询出sql的响应时间
调优方式
- 使用执行计划Explain,分析sql在数据库的执行情况
type字段:这条执行计划中的连接类型,all全表扫描,index索引扫描,range范围扫描等
rows: 表示该条执行计划中需要扫描的行数
Extra: 表示该条执行计划中的额外信息,通常会显示使用了哪个索引或者排序方式等等
- 使用覆盖索引
就是select的数据列只用从索引中就能够取得,不必从数据表中读取,换句话说查询列要被所使用的索引覆盖
要求查询的字段比较少
- 联合索引
查询常见的字段时,并存在多个,可以将多个字段一起建立联合索引,可以避免全表扫描
- 遵循最左匹配原则
在进行模糊查询的时候,都尽量遵循 like ‘字段%’;这样查询能利用到索引
- 索引字段过长怎么处理
1.使用前缀索引 :前缀索引是指只对字段的前面几个字符建立索引,而不是对整个字段建立索引。这样可以减少索引占用的内存,提高索引效率,从而优化数据库的性能。
2.使用哈希索引:哈希索引是指对字段进行哈希计算后建立的索引。由于哈希索引不存储实际的值,而是存储哈希值,因此可以节省索引占用的内存。但是哈希索引只能用于等值查询,而不能用于范围查询。
3.使用多列索引:多列索引是指对多个字段建立的联合索引。当唯一索引字段过长时,可以考虑将其与其他字段一起建立索引,从而减少索引占用的内存,提高索引效率。
- 避免查询的时候,一些字段进行函数操作
这样会导致索引失效
- 查询数据的时候,避免字段的隐式类型转换
字符类型的数字,查询的时候,使用数字类型,就默认会进行隐式转换
select * from t where id = 1 ,如果id是字符类型的,1是数字类型的
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· Manus爆火,是硬核还是营销?
· 终于写完轮子一部分:tcp代理 了,记录一下
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· 别再用vector<bool>了!Google高级工程师:这可能是STL最大的设计失误
· 单元测试从入门到精通