当前位置: 首页 > news >正文

5张表连接查询的优化_MySQL性能优化方案

前言

先引用一张图片

e17593ea7e793478cec7a0196b3e1564.png

目录图

ac466bdb01b73c5e6887e689626953bb.png

一、SQL语句优化

  • 开启慢查询功能
vim /etc/my.cnf
[mysqld]
slow-query-log = on # 开启慢查询功能
slow_query_log_file = /data/slow-query.log # 慢查询日志存放路径与名称
long_query_time = 5 # 查询时间超过5s的查询语句
log-queries-not-using-indexes = on # 列出没有使用索引的查询语句

1)查看所有日志状态: show variables like '%quer%';

2)查看慢查询状态:show variables like 'show%'

  • 分析SQL语句

MySql内部函数explain(查询sql的执行计划),explain返回各列的含义

table:显示这一行的数据是关于哪张表的
type:这是重要的列,显示连接使用了何种类型。
从最好到最差的连接类型为const、eq_reg、ref、range、index 和ALL
possible_keys:显示可能应用在这张表中的索引。如果为空,没有可能的索引。
key:实际使用的索引。如果为NULL,则没有使用索引。
keyjen:使用的索引的长度。在不损失精确性的情况下,长度越短越好
ref:显示索引的哪一列被使用了,如果可能的话,是一个常数
rows: MYSQL认为必须检查的用来返回请求数据的行数
  • 子查询优化

子查询尽量不用或改成join

  • group by 优化

group by 尽量使用索引字段

  • limit 优化

给查询语句增加limit

二、索引优化

  • 重复索引
  • 冗余索引
  • 检查重复及冗余索引的工具
  • 删除不用的索引

三、数据库结构优化

  • 选择合适的数据类型
  • 表的范式化
  • 表的反范式化的使用
  • 表的垂直拆分
  • 表的水行拆分

四、配置优化

  • 操作系统配置

1)缓存池大小

2)打开文件限制

  • MySQL配置

1)innodb缓冲池内存占用大小

2)innodb_buffer_pool_instances 缓冲池个数

3)innodb_log_buffer_size 缓冲的大小

4)innodb IO配置

五、服务器硬件优化

  • CPU 多核
  • 硬盘 raid0 raid1 raid5增加硬盘IO速度
参考文章列表:
MySql数据库优化可以从哪几个方面进行? - 青春阳光 - 博客园​www.cnblogs.com

p.s.收录一些mysql第三方客户端工具

  • MySQL官网推荐 MySQL Workbench
  • Navicat
  • phpMyAdmin
五种常用的MySQL图形化管理工具_刘鹏博的博客-CSDN博客​blog.csdn.net
91ad5dd8a6fcc708aa070547cb18099c.png

相关文章:

  • ( 10 )MySQL中的外键
  • mysql 16384_MySQL性能优化
  • Hibernate的注解和检索
  • mysql tables()_Mysql中对table的操作问题
  • Java中各种集合(字符串类)的线程安全性!!!
  • linx 卸载mysql_Linux下卸载MySQL
  • mysql简单分表_mysql分表场景分析与简单分表操作
  • vue 条件渲染与列表渲染
  • vue select清空_Vue+Webpack开发可复用的单页面富应用教程(技巧篇)
  • 两个同级div等高布局
  • cant connect to local mysql_Can't connect to local MySQL server through socket
  • jQuery的切换函数(hover,toggle)
  • mysql锁怎么控制并发_Mysql并发控制-锁
  • yii的ActionForm组件
  • java调用python爬虫_Java调用Python爬虫
  • 《微软的软件测试之道》成书始末、出版宣告、补充致谢名单及相关信息
  • 【347天】每日项目总结系列085(2018.01.18)
  • Android Studio:GIT提交项目到远程仓库
  • Android路由框架AnnoRouter:使用Java接口来定义路由跳转
  • Angular 2 DI - IoC DI - 1
  • Invalidate和postInvalidate的区别
  • Java 9 被无情抛弃,Java 8 直接升级到 Java 10!!
  • JavaScript 奇技淫巧
  • Java读取Properties文件的六种方法
  • java中的hashCode
  • JS基础篇--通过JS生成由字母与数字组合的随机字符串
  • Median of Two Sorted Arrays
  • nodejs调试方法
  • NSTimer学习笔记
  • PHP 的 SAPI 是个什么东西
  • vue 配置sass、scss全局变量
  • 关于Java中分层中遇到的一些问题
  • 力扣(LeetCode)357
  • 罗辑思维在全链路压测方面的实践和工作笔记
  • 使用docker-compose进行多节点部署
  • 思维导图—你不知道的JavaScript中卷
  • 通过npm或yarn自动生成vue组件
  • 文本多行溢出显示...之最后一行不到行尾的解决
  • 掌握面试——弹出框的实现(一道题中包含布局/js设计模式)
  • ###STL(标准模板库)
  • (4) openssl rsa/pkey(查看私钥、从私钥中提取公钥、查看公钥)
  • (java)关于Thread的挂起和恢复
  • (TOJ2804)Even? Odd?
  • (windows2012共享文件夹和防火墙设置
  • (二)什么是Vite——Vite 和 Webpack 区别(冷启动)
  • (附源码)计算机毕业设计SSM智慧停车系统
  • (机器学习-深度学习快速入门)第三章机器学习-第二节:机器学习模型之线性回归
  • (七)MySQL是如何将LRU链表的使用性能优化到极致的?
  • (十三)Java springcloud B2B2C o2o多用户商城 springcloud架构 - SSO单点登录之OAuth2.0 根据token获取用户信息(4)...
  • (四)Controller接口控制器详解(三)
  • (转)c++ std::pair 与 std::make
  • (最完美)小米手机6X的Usb调试模式在哪里打开的流程
  • .MSSQLSERVER 导入导出 命令集--堪称经典,值得借鉴!
  • .MyFile@waifu.club.wis.mkp勒索病毒数据怎么处理|数据解密恢复
  • .NET 4.0中使用内存映射文件实现进程通讯