MySQL性能优化
时间:2019-04-15
本文章向大家介绍MySQL性能优化,主要包括MySQL性能优化使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。
1、优化查询
可以通过分析查询语句了解查询语句的执行情况:
explain / describe 查询语句
查询结果显示了id,select_type,table,type,possible_keys,key等信息
id:表示查询语句的编号
select_type:表示查询语句的类型。该参数的几个常用取值:simple表示简单查询,其中不包括连接查询和子查询;primary表示主查询,或者最外层的查询语句;union表示连接查询的第二个或后面的查询语句
table:表示查询的表
possible_keys:表示查询中可能使用到的索引
key:查询中实际用到的索引
key_len:索引字段的长度
rows:表示查询的行数
使用索引查询:
查询语句使用like,如果查询条件的第一个字符是%,索引不会被使用
多列索引只有在查询条件的第一个字段是索引,索引才会被使用
查询语句中如果有or,则其前后的查询条件字段必须都是索引,索引才会被使用
使用索引查询:
查询语句使用like,如果查询条件的第一个字符是%,索引不会被使用
多列索引只有在查询条件的第一个字段是索引,索引才会被使用
查询语句中如果有or,则其前后的查询条件字段必须都是索引,索引才会被使用
优化查询基本原则:
尽量早过滤
优化子查询,使用join代替子查询
优化子查询,使用join代替子查询
尽量少排序
2、优化数据库结构:
○1分表、添加中间表、增加冗余字段
○2优化插入记录的速度:
2、优化数据库结构:
○1分表、添加中间表、增加冗余字段
○2优化插入记录的速度:
1、当有大量插入数据时,应先禁用索引插入完毕后再开启索引。
禁用索引语句:alter table 表名 disable keys
开启索引语句:alter table 表名 enable keys
2、插入记录时禁用唯一性检查,插入后开启
禁用唯一性检查:set unique_checks = 0
开启唯一性检查:set unique_checks = 1
3、优化insert语句
插入数据时应尽量一次性插入,减少与数据库的连接效率更高
○3分析表、检查表、优化表
○3分析表、检查表、优化表
- 【Hibernate那点事儿】—— Hibernate应该了解的知识
- Java魔法堂:以Windows服务的形式运行Java程序
- 【Hibernate那点事儿】—— Hibernate知识总结
- java获取网页源代码
- Java魔法堂:注解用法详解——@SuppressWarnings
- 日志那点事儿——slf4j源码剖析
- 给Dreamweaver插上Svn的翅膀
- MyBatis魔法堂:ResultMap详解
- 腾讯海量监控体系经验分享
- 【Spring开发】—— Spring Core
- Java魔法堂:找外援的利器——Runtime.exec详解
- win10的80端口被system占用的问题
- 【Spring开发】—— AOP之方法级拦截
- eclipse tomcat下网页修改不生效
- MySQL 教程
- MySQL 安装
- MySQL 管理与配置
- MySQL PHP 语法
- MySQL 连接
- MySQL 创建数据库
- MySQL 删除数据库
- MySQL 选择数据库
- MySQL 数据类型
- MySQL 创建数据表
- MySQL 删除数据表
- MySQL 插入数据
- MySQL 查询数据
- MySQL where 子句
- MySQL UPDATE 查询
- MySQL DELETE 语句
- MySQL LIKE 子句
- mysql order by
- Mysql Join的使用
- MySQL NULL 值处理
- MySQL 正则表达式
- MySQL 事务
- MySQL ALTER命令
- MySQL 索引
- MySQL 临时表
- MySQL 复制表
- 查看MySQL 元数据
- MySQL 序列 AUTO_INCREMENT
- MySQL 处理重复数据
- MySQL 及 SQL 注入
- MySQL 导出数据
- MySQL 导入数据
- MYSQL 函数大全
- MySQL Group By 实例讲解
- MySQL Max()函数实例讲解
- mysql count函数实例
- MYSQL UNION和UNION ALL实例
- MySQL IN 用法
- MySQL between and 实例讲解
- 【SpringBoot WebFlux 系列】WebFlux 之 Path 参数解析与 url 映射
- 「推荐」阿里开源的分布式事务框架 Seata
- BeanDefinition元信息:除了Bean名称和类名,还有哪些Bean元信息值得关注?
- 【SpringBoot WebFlux 系列】 header 参数解析
- MySQL为什么还有kill不掉的语句?
- 【SpringBoot DB 系列】h2databse 集成示例 demo
- 在grant语句之后要跟着flush privileges吗?
- Python实现数据写入 Excel 的三种模块!
- redis的两种持久化的机制,你真的了解么?
- 绝对能让你彻底明白的Redis的内存淘汰策略
- redis缓存穿透穿透解决方案-布隆过滤器
- Python动态图见得多了?Excel:亦可赛艇!我可是身经百战了
- LinkedList 源码剖析
- ArrayDeque 源码解读
- Apache Kafka 真的只是消息引擎吗?