首页 > 数据库 >MySQL优化

MySQL优化

时间:2024-02-07 16:44:06浏览次数:32  
标签:小表 查询 索引 MySQL 优化 select 大表

优化分为六大部分:

  • SQL语句的优化
  • 索引的优化
  • 表结构的优化
  • 事务优化
  • 系统配置优化
  • 物理机的优化
  1. SQL语句的优化
    a. 尽量使用select 字段名,不要使用select *,select *不能使用索引覆盖。只查需要用到的列。
    b. 小表驱动大表。主查询 in/exists 子查询.
    ⅰ. in 先执行右边的子查询再执行主查询。in 适用于左边大表,右边小表。
    ⅱ. exists 先执行左边的主查询然后执行子查询。exists 适用于左边小表,右边大表
    ⅲ. 核心是先查小表,再查大表
    c. 使用 join 代替子查询,join不要连接过多的表
    d. insert update delete 数据时,批量进行操作。不要循环,一条条的插入
    e. 多用limit,减少不必要的查询和返回。
    f. 使用group by时,首先使用where 减小数据量,分组时效率会高
  2. 索引的优化
    a. explain 查看执行计划,看是否走索引。
    b. select \order by 字段使用索引
    c. 控制索引的数量,阿里规约:一个表5个索引,并且单个索引中的字段数不超过5个。因为insert update delete操作需要维护索引。
    d. 联合索引时,遵守最左匹配原则
    e. 不在索引列上进行计算、函数
  3. 表结构的优化
    a. 合理的表结构
    b. 适当冗余
    c. 尽量使用not null字段。null 字段会多使用一个字节来记录是否为null。
    d. 合理的字段类型。
    ⅰ. 尽量选择数字类型,因为数字的处理速度快于字符串的处理速度
    ⅱ. 尽可能使用小的类型,比如:用bit存布尔值,用tinyint存枚举值等
    ⅲ. 长度固定的字符串字段,用char类型
    ⅳ. 长度可变的字符串字段,用varchar类型
    ⅴ. 金额字段用decimal,避免精度丢失问题
  4. 事务优化
    a. 避免长事务
    b. 减少锁定的时间长度和资源数
  5. 系统配置优化
    a. 慢查询默认是关闭的,生产环境需要关闭,开发环境打开,会有一定的性能损耗。开启的命令 set global slow_query_log='ON';
    b. 调整redolog的size。这个size小了,会导致频繁的刷盘,效率会降低。InnoDB特有的。
  6. 物理机的优化
    a. 更大的内存、磁盘(高速读写)、网络带宽、CPU

标签:小表,查询,索引,MySQL,优化,select,大表
From: https://www.cnblogs.com/Sun-yuan/p/18011060

相关文章

  • 【转帖】数据库传奇:MySQL创世之父的两千金My、Maria
    https://zhuanlan.zhihu.com/p/672142719 1人赞同了该文章《数据库传奇:MySQL创世之父的两千金My、Maria》一、前言  MySQL是一款备受欢迎的关系型数据库管理系统(RDBMS),最初由瑞典公司MySQLAB开发,目前隶属于OracleCorporation。在DB-Engines的排名中,MySQL稳......
  • docker-compose部署nacos2.3.0+mysql5.7
    docker-compose-nacos.ymlservices:mysql-nacos:restart:alwaysimage:mysql:5.7.18container_name:mysql-lablevolumes:-/Users/docker/mysql/source/mydir:/mydir-/Users/docker/mysql/source/datadir:/var/lib/mysql-/U......
  • 单调队列优化DP&斜率优化&四边形不等式
    在本文中,我们将通过一道题来浅谈DP优化三大妈。P3195[HNOI2008]玩具装箱-洛谷|计算机科学教育新生态(luogu.com.cn)对于这种类型的题目,我们一般可以转化为如下形式:那么,$val(i,j)$又通常分为两种情况:其值仅与$i,j$中的一个有关。其值与$i,j$两者都有关。单调队列......
  • java基础语法之匿名内部类的优化格式lambda
    一:lambda表达式的概述lambda表达式实质上就是对匿内部类的优化但是又不同于匿名内部类。它的使用前提是有且仅有一个抽象方法,有一个接口。二:具体说明<1>函数式编程思想的介绍在数学中,函数就是有输入量、输出量的一套计算方案,也就是“拿数据做操作”在数学中,函数就是有输......
  • MySQL 根据条件迁移数据
    在实际数据库管理和数据处理中,经常需要将数据从一个表迁移到另一个表,或者在同一个表中根据某些条件进行数据迁移。MySQL作为一个流行的关系型数据库管理系统,提供了多种方法来实现数据的迁移。本文将介绍如何使用MySQL来根据条件迁移数据的技术方法。1.使用INSERTINTOSELECT语句I......
  • 利用ThreadLocal优化获取用户基本信息
    //测试类packagecom.di.bigevent;importorg.junit.jupiter.api.Test;publicclassThreadLocalTest{@TestpublicvoidtestThreadLocalSetAndGet(){ThreadLocaltl=newThreadLocal();newThread(()->{tl.set("李星......
  • 建站之关于CP网站SSC搭建BC平台建站建议和运营优化分享
    关于搭建BC平台建站建议和运营优化分享,我可以在一定程度上提供一些信息和经验。一、关于搭建BC平台建站建议:确定网站目标和受众群体:在开始构建网站之前,需要明确网站的定位和目标受众群体。这将有助于确保网站内容符合受众需求,提高转化率。选择合适的开发语言和技术框架:根据网站......
  • 【幻兽帕鲁教程】服务器内存优化
    大量幻兽帕鲁玩家反馈,开服后在进行一段时间的游戏后会出现内存溢出导致异常退出游戏的情况,这里为大家提供一些缓解内存不足的方案作参考: 一:为Windows服务器配置虚拟内存本小节以WindowsServer2022为例,其他版本的Windows操作系统类似,可据此做参考。1、打开服务器的控......
  • MySQL存储引擎-InnoDB数据页
    MySQL存储引擎-InnoDB数据页MySQL一个数据页默认16kb,MySQL为了不同目的涉及了很多类型的数据页,如undo页、ChangeBuffer页等等。我们这里只关心存放数据的页,即索引(INDEX)页。一个数据页的存储空间大致被划分为7部分,分别为:1、FIleHeader 文件头 38字节2、PageHeader页面......
  • 单调队列优化DP
    单调队列在DP中的基本应用,是对这样一类DP状态转移方程进行优化:\(dp[i]=\min\{dp[j]+a[i]+b[j]\},L(i)\lej\leR(i)\)。方程中的\(\min\)也可以是\(\max\),方程的特点是其中关于\(i\)的项\(a[i]\)和关于\(j\)的项\(b[j]\)是独立的,而\(j\)被限制在窗口......