美文网首页
mysql优化笔记

mysql优化笔记

作者: lareina_lcc | 来源:发表于2022-04-18 11:12 被阅读0次

接口慢主要分为几方面:

1、多做了不必要的查询

全部用select *,或者业务查询的时候没有考虑清楚多做了其他没必要的查询。

2、外部调用的接口过多

循环调用接口获得数据(这个是比较严重的问题);或者接口内部使用了很多外部的接口调用。

3、没有命中索引

查询中用了like '%[search]%'、空值比较、!=、or查询手段都会导致索引不命中;复杂索引由于定义了字段的命中顺序,左侧的字段没有添加入查询就不会命中;排序没有命中索引,但是需要排序的内容超过了缓冲区大小。

4、定义了不必要的索引

show index from table查看每个索引的基数,有些索引的字段基数非常大但是查询的关键不在于他,需要更改结构降低基数或者直接去掉索引,还有些数据分布单一的字段被定义了索引也可以去掉。

5、命中了太多索引被mysql默认算法合并了

mysql会自动合并索引查询的交集,有时候并没有比命中单个索引查询更快,或者可以直接定义一个复杂索引。

解决方案整理:

1.两表关联查询在leftjoin和exists和in中选择的时候,大部分情况下都用leftjoin,只有在特定条件下推荐使用exists(A表根据B条件搜索,A表数据量少,B表数据量大,查询条件都加索引,存在A表的搜索条件,可能条件不带索引)。

2.orderBy+limit,mysql存在数据接口的优化,不会对表全部排序,而会处理limit数量的排序之后结束排序,复杂度降为k*O(n);另外排序尽量用索引字段排序。

3.索引优化,建立复杂索引之后建议加上条件全部命中,部分命中的查询效率更低,这是从索引唯一性的标准出发的。

4.去重select distinct和group by的抉择,优先选用group by,更快。

5.json数据添加索引,特定字段增加虚拟列索引。

6.强制命中索引,或者忽略某些索引的命中(不推荐,但是在没有重构却要优化的情况下非常有用)。

7.整理频繁查询的sql,梳理索引整合复杂索引。

相关文章

  • 无标题文章

    目录 笔记大型项目优化概述大型项目优化的方向代码优化数据库优化缓存优化架构优化Memcache与MySQL比较语法...

  • 详解MySQL之SQL优化(1)

    MySQL学习笔记(6) SQL优化(1) 优化SQL的一般步骤 本文所涉及案例表来自MySQL的案例库sakil...

  • MySql表设计与优化

    MySql设计与优化系列笔记:一、数据库设计三范式与反范式二、MySql表设计与优化 1、实体关系分析 实体关系需...

  • 数据库设计三范式与反范式

    MySql设计与优化系列笔记:一、数据库设计三范式与反范式二、MySql表设计与优化 第一范式: 1、数据库的所有...

  • MySQL 性能优化

    注 本文是对于sqlercn在慕课上发表的“MySQL 性能优化”课程的学习笔记,内容并非原创。 前言 MYSQL...

  • mysql优化笔记

    背景: 最近在公司遇到一个业务场景的查询优化,也就2000条的数据查询竟然要两分多种(慢出天际),但是这条sql业...

  • mysql优化笔记

    接口慢主要分为几方面: 1、多做了不必要的查询 全部用select *,或者业务查询的时候没有考虑清楚多做了其他没...

  • MYSQL分页limit速度太慢优化方法

    MySQL 百万级分页优化(Mysql千万级快速分页)(转) MYSQL分页limit速度太慢优化方法 MYSQL...

  • MySQL相关文章索引(2)

    1.MySQL性能优化 对MySQL语句的性能分析与优化 Mysql 监控 Innodb 阻塞状况 MySQL索引...

  • 11-mysqlSQL分析

    六星教育 - java-mysql优化1909 SQL优化 所谓SQL优化:基于MySQL的优化器查询规则来优化S...

网友评论

      本文标题:mysql优化笔记

      本文链接:https://www.haomeiwen.com/subject/kkxwtrtx.html