MySQL优化及索引

MySQL优化一般会从以下几方面进行入手:引擎(MySAM、InnoDB等引擎的选择)、表设计(可以反三范式添加冗余字段提高检索效率)、字段的数据类型(数值型字段优于字符串字段)、sql书写、索引等方面进行优化,其中索引优化最为常见

1.MySQL索引优化前,要对sql的执行频率进行分析

show global status like ‘com_______’(7个_)用来查询删除次数、插入次数、查询次数、更新次数等信息,来看看是否是查询次数较多

global 查询全局数据   session 查看当前会话

添加索引改善的是查询效率,由于B+树的数据结构特点,索引本身要占据一部分空间,树的度数(一个节点的子节点个数)就会减少,树的高度会增高,添加索引会减慢新增、修改的速度,因此需要使用执行频率进行分析是否合适添加索引

2.索引的创建

creat index idx_user_name on tb_user(name)       为tb_user表中的name字段添加索引名字叫 idx_user_name

create unique index idx_user_phone on tb_user(phone)     为tb_user表中的phone字段添加非空唯一索引索引名叫index idx_user_phone

create index id_user_pro_age_sta on tb_user(profession,age,status)    为tb_user表中添加profession,age和status这3个字段的联合索引索引名称为id_user_pro_age_sta

create index idx_email on tb_user(email)      为tb_user的email字段创建索引名字叫idx_email

show index from tb_user   查看tb_user表中所有的索引数据

索引语法总结

创建索引

create (unique|fulltext) index 索引名字 on 表名(需加索引字段的名字)

查看索引

show index from 表名

删除索引

drop index 索引名称 on 表名

补充:

alter table ‘user’ add primary key(id)为id字段添加主键索引

alter table user add index(username)添加username为普通索引

3.慢查询日志

开启慢查询日志,需要修改mysql中的配置文件/etc/my.cnf

开启MySQL慢日志查询开关

slow_query_log=1

慢查询日志默认时间为10秒,需要进行修改,修改慢查询日志,下面修改为2秒

long_query_time=2

修改配置文件可以使用vim命令进行修改,也可远程连接工具图形化界面进行修改

慢查询日志会将日志信息保存到/var/lib/mysql/localhost-slow.log中

修改完配置需要重新启动mysql服务 systemctl restart mysqld

在selec语句前面加上explain,显示MySQL如何使用SQL执行计划

explain select * from user where id = 1 union select * from user where id =2

显示执行计划的结果

id是select查询序列号,代表查询顺序,数字越大优先级越高

select_type:select语句类型可分为simple、primary、subquery、dervied、union、union result

其中最重要的两个字段是type 和 extra

type 区间索引,显示连接使用了何种类型,从好到差的连接类型为

system>const>eq_ref(查询条件在主表是唯一)>ref(查询条件在主表不是唯一)>range>index>all

一般来说,应保证查询效率在range级别(检索范围行)以上,最好能够达到ref级别

如果是all全表扫描数据文件和index全表扫描索引文件,就说明索引设置有问题需要优化

extra 执行状态如果是using index 表示数据仅仅使用到了索引信息而没有回表查询

如果出现using filesort、using temporary 表示使用到了外部文件和使用到了临时表,这时需要对索引进行优化

并且里面可以通过key和key_len来检查是否命中了索引,如果本身已经添加了索引,也可判断索引是否有失效的情况

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/679361.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

虚拟机ens33没有显示ip

1.然后输入命令 cd /etc/sysconfig/network-scripts或: vim /etc/sysconfig/network-scripts/ifcfg-ens33 2.先按 i 开始【编辑】; 3.再用方向键把光标移到ONBOOT这里,把no改成yes; 4.按esc退出编辑模式, 5.按shift: 【输入wq】保…

Stable Diffusion 模型下载:ToonYou(平涂卡通)

本文收录于《AI绘画从入门到精通》专栏,专栏总目录:点这里。 文章目录 模型介绍生成案例案例一案例二案例三案例四案例五案例六案例七案例八案例九案例十 下载地址 模型介绍 ToonYou 是一个平涂风格的卡通模型,它的画风独特、光感强烈、画面…

c++ STL系列——(四)queue

在C中,标准模板库(STL)提供了许多容器和算法,其中之一便是queue。queue是一个先进先出(FIFO)的数据结构,它允许在队列的末尾添加元素,并从队列的开头移除元素。本文将深入探讨C STL中…

Ubuntu Desktop - Details (设备详情)

Ubuntu Desktop - Details [设备详情] 1. OverviewReferences 1. Overview System Settings -> Details -> Overview ​ References [1] Yongqiang Cheng, https://yongqiang.blog.csdn.net/

H5/CSS 笔试面试考题(51-60)

简述在使用 table 表现数据时,有时候表现出来的会比自己实际设置的宽度要宽,为此需要设置下面哪些属性值 ( ) A:cellpadding: 0 B:padding: 0 C:margin: 0 D:cellspacing: 0 面试通过率:47.0% 推荐指数: ★★★★ 试题难度: 中级 试题类型: 选择题 答案:a、d 简述下…

Flutter Web应用清理缓存

前言 应用清理缓存是一个常见的功能,在移动端清理缓存这个行为比较常见,但是游览器web应用清理缓存并不常见,很多人都不会特地去清理,与之相关的,flutter的web应用清理缓存的资料网上比较少,本文进行一些探…

单片机在物联网中的应用

单片机,这个小巧的电子设备,可能听起来有点技术性,但它实际上是物联网世界中的一个超级英雄。简单来说,单片机就像是各种智能设备的大脑,它能让设备“思考”和“行动”。由于其体积小、成本低、功耗低、易于编程等特点…

【C++第二阶段】赋值运算符重载

你好你好&#xff01; 以下内容仅为当前认识&#xff0c;可能有不足之处&#xff0c;欢迎讨论&#xff01; 文章目录 赋值运算符重载 赋值运算符重载 实验①&#xff0c;还没有对析构运算符重载时 #include<iostream> #include<string> using namespace std;clas…

失去中国市场的三星仍是全球第一,但中国手机无法失去海外市场

随着2023年分析机构公布全球手机市场和中国手机市场的数据&#xff0c;业界终于看清中国市场早已没有以前那么重要&#xff0c;三星、苹果这些国际品牌对中国市场的依赖没有他们想象的那么严重&#xff0c;相反中国手机对海外市场比以往任何时候都要更依赖了。 三星在2023年被苹…

消息队列使用的四种场景介绍

一、简介 消息队列中间件是分布式系统中重要的组件&#xff0c;主要解决应用耦合&#xff0c;异步消息&#xff0c;流量削锋等问题。 实现高性能&#xff0c;高可用&#xff0c;可伸缩和最终一致性架构。 使用较多的消息队列有ActiveMQ&#xff0c;RabbitMQ&#xff0c;ZeroMQ…

【开源】SpringBoot框架开发个人健康管理系统

目录 一、摘要1.1 项目介绍1.2 项目录屏 二、功能模块2.1 健康档案模块2.2 体检档案模块2.3 健康咨询模块 三、系统展示四、核心代码4.1 查询健康档案4.2 新增健康档案4.3 查询体检档案4.4 新增体检档案4.5 新增健康咨询 五、免责说明 一、摘要 1.1 项目介绍 基于JAVAVueSpri…

树莓派4B(Raspberry Pi 4B) 使用docker搭建单机版nacos

树莓派4B&#xff08;Raspberry Pi 4B&#xff09; 使用docker搭建单机版nacos ⚠️ 由于树莓派上的芯片是ARM架构&#xff0c;而官方推出的docker镜像不适用于ARM架构&#xff0c;所以想用树莓派搭建最新版的Nacos服务的小伙伴们可以忽略我这篇文章了。本文基于nacos 2.0.4&am…

docker之centos7容器常用命令和服务安装

一、前言 以前我们如果想在windows环境下使用linux系统&#xff0c;最早的是一台主机上安装双机系统&#xff0c;再后来我们有了VMware&#xff0c;可以通过workstations虚拟化平台安装虚拟机。现在我们还可以通过docker安装linux容器&#xff0c;容器更轻量也更便捷。不过凡事…

SpringCloud-高级篇(二十一)

前面解决了消息的可靠性、消息的延迟问题&#xff0c;下面研究一下消息的堆积的问题&#xff1a; &#xff08;1&#xff09;消息堆积问题 消息产生堆积&#xff0c;上限后&#xff0c;最早的消息成为死信&#xff0c;有消息被丢弃&#xff0c;这对安全性较高的业务中是不行的…

HiveSQL——条件判断语句嵌套windows子句的应用

注&#xff1a;参考文章&#xff1a; SQL条件判断语句嵌套window子句的应用【易错点】--HiveSql面试题25_sql剁成嵌套判断-CSDN博客文章浏览阅读920次&#xff0c;点赞4次&#xff0c;收藏4次。0 需求分析需求&#xff1a;表如下user_idgood_namegoods_typerk1hadoop1011hive1…

JAVA设计模式之迭代器模式详解

迭代器模式 1 迭代器模式介绍 迭代器模式是我们学习一个设计时很少用到的、但编码实现时却经常使用到的行为型设计模式。在绝大多数编程语言中&#xff0c;迭代器已经成为一个基础的类库&#xff0c;直接用来遍历集合对象。在平时开发中&#xff0c;我们更多的是直接使用它&a…

解决 postman测试接口报404 Not Found

JDK版本&#xff1a;jdk17 IDEA版本&#xff1a;IntelliJ IDEA 2022.1.3 文章目录 问题描述原因分析解决方案 问题描述 当我使用postman测试接口时&#xff0c;报了 404 Not Found 的错误&#xff0c;报错截图如下所示 但我的后端程序中已经定义了该接口&#xff0c;如下所示 …

C语言指针2.0

1. 指针语法解剖 任意的指针&#xff0c;不管有多复杂&#xff0c;其定义都由两部分组成。 第1部分&#xff1a;指针所指向的数据类型&#xff0c;可以是任意的类型第2部分&#xff1a;指针的名字 char (*p1); // 第2部分&#xff1a;*p1; 第1部分&#xff1a;ch…

图像的重要属性

图像还具有以下重要属性&#xff1a; 旋转不变性&#xff08;rotation invariance&#xff09;&#xff1a; 图像在发生旋转后&#xff0c;其重要特征和对象仍然能够被识别。 尺度不变性&#xff08;Scale Invariance&#xff09;&#xff1a; 图像在缩放或尺度变化后&#xf…

分享76个时间日期JS特效,总有一款适合您

分享76个时间日期JS特效&#xff0c;总有一款适合您 76个时间日期JS特效下载链接&#xff1a;https://pan.baidu.com/s/1s7tPGT_ItK7dNK5_qbZkug?pwd8888 提取码&#xff1a;8888 Python采集代码下载链接&#xff1a;采集代码.zip - 蓝奏云 学习知识费力气&#xff0c;…