mysql优化学习笔记
优化sql的一般步骤
通过show status了解各种sql的执行频率
定位执行效率低的sql语句
通过explain分析效率低的sql
通过show profile分析sql
通过trace分析优化器如何选择执行计划
确定问题,采取措施优化
索引优化措施
-
mysql中使用索引的典型场景
匹配全值,条件所有列都在索引中而且是等值匹配
匹配值的范围查找,字段必须在索引中
匹配最左前缀,复合索引只会根据最左列进行查找
仅仅对索引进行查询,即查询的所有字段都在索引上
匹配列前缀,比如like 'ABC%',如果是like '%aaa'就不可以
如果列名是索引,使用column is null会使用索引
-
存在索引但不会使用索引的典型场景
以%开头的like查询不能使用b树索引
数据类型出现隐式转换不能使用索引
复合索引,查询条件不符合最左列原则
用or分割的条件,如果前面的条件有索引,而后面的条件没有索引
查看索引使用的情况
show status like 'Handler_read%';
如果Handler_read_rnd_next的值比较高,说明索引不正确或者查询没有使用到索引
简单实用的优化方法
定期检查表和分析表
分析表语法:
analyze table 表名;
检查表语法:
check table 表名;
-
定期优化表
对于字节大小不固定的字段,数据更新和删除会造成磁盘空间不释放,这时候就行优化表,可以整理磁盘碎片,提高性能
语法如下:
optimize table user(表名);
如果文章对你有帮助,请去我的博客留个言吧! 我的博客
web开发之业余架构师
java,nodejs,python脚本,go语言开发,web开发,编程学习,随笔感想。
推荐阅读
java程序员最好的debug教学
如果你不知道如何添加断点,只需点击左边面板(行号前面)断点即被创建。在调试界面中,“断点”视图会把所有被创建的断点列出来。我们可以给它加一个布尔条件,然后按Ctrl+s保存断点,该断点会被激活并且如果布尔条...
maochunguang赞 2阅读 4.2k
万字详解,吃透 MongoDB!
MongoDB 是一个基于 分布式文件存储 的开源 NoSQL 数据库系统,由 C++ 编写的。MongoDB 提供了 面向文档 的存储方式,操作起来比较简单和容易,支持“无模式”的数据建模,可以存储比较复杂的数据类型,是一款非常...
JavaGuide赞 8阅读 1.7k
万字长文~vue+express+mysql带你彻底搞懂项目中的权限控制(附所有源码)
所谓的权限,其实指的就是:用户是否能看到,以及是否允许其对数据进行增删改查的操作,因为现在开发项目的主流方式是前后端分离,所以整个项目的权限是后端权限控制搭配前端权限控制共同实现的
水冗水孚赞 11阅读 1.5k
花了几个月时间把 MySQL 重新巩固了一遍,梳理了一篇几万字 “超硬核” 的保姆式学习教程!(持续更新中~)
MySQL 是最流行的关系型数据库管理系统,在 WEB 应用方面 MySQL 是最好的 RDBMS(Relational Database Management System:关系数据库管理系统)应用软件之一。
民工哥赞 11阅读 1.1k
一次偶然机会发现的MySQL“负优化”
今天要讲的这件事和上述的两个sql有关,是数年前遇到的一个关于MySQL查询性能的问题。主要是最近刷到了一些关于MySQL查询性能的文章,大部分文章中讲到的都只是一些常见的索引失效场合,于是我回想起了当初被那个...
骑牛上青山赞 8阅读 2.2k评论 2
程序员英语学习指南
动机为什么程序员要学习英语?工作:我们每天接触的代码都是英文的、包括很多技术文档也是英文的学习:最新最前沿的技术最开始都是只有English版本就业:学好英语让你的就业范围扩大到全球,而不只限于国内目标读...
九旬赞 6阅读 642
又一款内存数据库横空出世,比 Redis 更强,性能直接飙升一倍!杀疯了
KeyDB是Redis的高性能分支,专注于多线程,内存效率和高吞吐量。除了多线程之外,KeyDB还具有仅在Redis Enterprise中可用的功能,例如Active Replication,FLASH存储支持以及一些根本不可用的功能,例如直接备份...
民工哥赞 4阅读 764评论 1
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。