MYSQL原理学习篇简记(五)

 

👏作者简介:大家好,我是小周同志,25届双非校招生Java选手,很高兴认识大家

📕学习出处:本文是学自小林coding (xiaolincoding.com) 网站的MYSQL图解篇

🔥如果感觉博主的文章还不错的话,请👍三连支持👍一下博主哦

 

什么时候需要 / 不需要创建索引?

 

索引的优点:

  • 大大提高的查询速率。尤其是b+树,时间复杂度为O(logdN),当d就是最大节点为100时,应付千万级数据的查询,也只需要3-4次io操作。

索引的缺点:

  • 占用物理磁盘空间。

  • 索引需要维护。比如修改这个索引的时候,索引内部会进行自适应排序。

  • 降低表的增删改的效率。因为每次增删改索引,B+ 树为了维护索引有序性,都需要进行动态维护

 

什么时候适用索引?
  • 字段有唯一性限制的

  • 经常用于where查询条件的字段。可以增加查询的效率,当有多个字段查询条件时,可以使用联合索引。

  • 用于 GROUP BYORDER BY 的字段。这样在查询的时候就不需要再去做一次排序了,因为建立索引之后在 B+Tree 中的记录都是排序好的。

 什么时候不适用索引?
  • 没有用 whereGROUP BYORDER BY的。既然 无法做到快速定位,那么就相当于索引没直到应有的作用,就不需要索引了,反而浪费了物理磁盘空间。

  • 存在大量重复数据的列不需要索引。因为大量重复数据的话,索引就会进行多次磁盘和内存的io操作,性能消耗贼大,如果这样的话,还不如不加索引。MYSQL有个查询优化器,发现某个数据在表中出现的百分比比较大,会忽略索引,进行全表扫描。

  • 表数据太少,也不需要创建索引。不需要索引也可以很快的找到数据,那么索引就没必要加了。

  • 经常更新的字段不需要创建索引。索引字段被更新之后,b+树会进行自适应重排序,会影响数据库的性能。

有什么优化索引的方法?

前缀索引优化

覆盖索引优化

主键索引最好是自增的

索引最好设置为 NOT NULL

防止索引失效

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

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

相关文章

11 Php学习:函数

PHP 内建函数Array 函数 PHP Array 函数是 PHP 核心的组成部分。无需安装即可使用这些函数。 创建 PHP 函数 当您需要在 PHP 中封装一段可重复使用的代码块时,可以使用函数。下面详细解释如何创建 PHP 函数并举例说明。 创建 PHP 函数的语法 PHP 函数的基…

【数据结构】图简介

目录 1. 简介2. 存储2.1 矩阵存储2.2 邻接表3 图的遍历3.1 深度优先搜索的方法3.2 广度优先搜索的方法1. 简介 图(graph)是用于表示物体和物体之间存在某种关系的结构。数学抽象后的“物体”称为节点或顶点(Vertex,node或 point)。节点之间的相关关系称作边(edge),根据…

生成式AI对UiPath来说是机遇还是挑战?

企业争相通过技术革新来领跑市场,机器人流程自动化(RPA)技术更是将企业的效率和成本控制推向了新的高度。但当人工智能(AI)的最新进展——生成式AI登上舞台时,它不仅带来了变革的可能,还提出了一…

Vue3---基础2(component)

主要讲解 component 的创建 以及vue插件的安装 Vue.js Devtools 为谷歌浏览器的Vue插件,可以在调试工具内查看组件的数据等 下载 有两种下载方式 1. 谷歌应用商店 打开Chrome应用商店去下载,这个方法需要魔法 2. 极简插件 极简插件官网_Chrome插件下载_…

[C++][算法基础]n-皇后问题(DFS)

n−皇后问题是指将 n 个皇后放在 nn 的国际象棋棋盘上,使得皇后不能相互攻击到,即任意两个皇后都不能处于同一行、同一列或同一斜线上。 现在给定整数 n,请你输出所有的满足条件的棋子摆法。 输入格式 共一行,包含整数 n。 输出…

android 源码环境配置

如何配置自己的源码调试环境 1 编译源码 repo sync -j8 --fail-fast .build/envsetup.sh lunch 选73 make -j8 emulator 2 配置android studio sudo apt install openjdk-9-jre-headless //安装java https://developer.android.google.cn/studio//下载studio 解压后打开bin里…

APP开发教学:开发同城O2O外卖跑腿系统源码详解

同城O2O外卖跑腿系统,满足了人们对于外卖送餐和生活服务的需求。今天,小编将为您讲解如何开发同城O2O外卖跑腿系统源码。 1.前期准备 首先,我们需要明确系统的功能需求和用户需求,包括外卖订购、配送员接单、支付功能等。其次&am…

matlab多核程序如何共享内存和数据

在MATLAB中,多核程序共享内存和数据主要依赖于MATLAB的并行计算工具箱(Parallel Computing Toolbox)。这个工具箱提供了多种机制来在多个工作进程(workers)之间共享数据,这些工作进程可能运行在同一台机器的…

MySQL、Maria数据库用户管理(创建、修改、删除用户)常用操作

一. 前言 MySQL 在安装时,会默认创建一个名为 root 的用户,该用户拥有超级权限,可以控制整个 MySQL 服务器。 在对 MySQL 的日常管理和操作中,为了避免有人恶意使用 root 用户控制数据库,我们通常创建一些具有适当权…

(78)删除有序数组中的重复项(79)排序矩阵查找

文章目录 1. 每日一言2. 题目(78)删除有序数组中的重复项2.1 解题思路2.2 代码 3. 题目(79)排序矩阵查找3.1 解题思路3.1.1 暴力查找暴力查找代码 3.1.2 二分查找二分查找代码 3.1.3 贪心贪心代码 4. 结语 1. 每日一言 水晶帘动微风起,满架蔷薇一院香。 —高骈- 2.…

minio-docker单节点部署SDK测试文件上传下载

目录 一,docker部署minio单节点单磁盘 二,SDK测试上传下载 一,docker部署minio单节点单磁盘 1.拉取镜像 # 下载镜像 docker pull minio/minio 2.查看镜像 docker images 3.启动minio(新版本) 创建本机上的挂载目录,这个可以…

Java中Runnable和Callable有什么不同?(企业真题)

Java中Runnable和Callable有什么不同? 与之前的方式的对比:与Runnable方式的对比的好处 call()可以有返回值,更灵活 call()可以使用throws的方式处理异常,更灵活 Callable使用了泛型参数,可以指明具体的call()的返回值…

NetSuite 销售订单页面选择客户后停滞问题研究

随着用户环境中定制内容的增加,用户会发现Sales Order中选择Customer时的页面停滞时间会变长。这让用户感到很疑惑。 我们初步研究了一下这个问题,两个变量比较显著: •Form的页签数量•脚本的挂载数量 试验数据 1. 多页签,无…

二维相位解包理论算法和软件【全文翻译- 非加权多网格算法解包裹(5.3.3)】

5.3.3 非加权多网格算法 在本节中,我们将介绍第四种非加权最小二乘相位解包算法。与前三种算法不同,这是一种迭代算法,是第 5.4 节介绍的加权最小二乘相位解包多网格技术的基础。本节开始将详细介绍多网格方法,包括典型多网格算法的伪代码。由于多网格算法是以递归方式自然…

潍微科技-水务信息管理平台 ChangePwd SQL注入漏洞复现(CNVD-2024-14945)

0x01 产品简介 水务信息管理平台主要帮助水务企业实现水质状态监测、管网运行监控、水厂安全保障、用水实时监控以及排放有效监管,确保居民安全稳定用水、环境有效保护,全面提升水务管理效率。由山东潍微科技股份有限公司研发,近年来,公司全力拓展提升水务、水利信息化业务…

nginx工作原理解析

目录 1、master-workers 的工作机制介绍 2、master-workers 的机制的好处 3、设置多少个 worker 4、最大连接数和支持的最大并发数的计算 1、master-workers 的工作机制介绍 nginx在启动后,会有一个master进程和一个或者多个相互独立的worker进程 过来的请求由…

数字化时代:IT界的致富秘籍 —— 策略×态度×机遇

🌟 数字化时代:IT界的致富秘籍🚀 —— 策略态度机遇 在数字化浪潮中冲浪🏄‍♂️,IT行业犹如一片无限可能的蓝海。想要在这片汹涌的海洋中捕获财富,不是一件轻而易举的事。让我们一起深入探索,如…

对给定向量旋转

对给定向量旋转 顺时针&#xff1a; 逆时针&#xff1a; 源码&#xff1a; QPointF rotateVector(const QPointF& dir, double angle, bool flag){double rad (angle * M_PI) / 180;QPointF res;if (flag){float x static_cast<float>(dir.x() * std::cos(rad) …

redisson实现的分布式锁是可重入的吗?

首先理解可重入锁&#xff1a; 可重入锁&#xff0c;又叫做递归锁&#xff0c;是指在同一个线程在外层方法获取锁的时候&#xff0c;再进入该线程的内层方法会自动获取锁&#xff08;前提是同一个对象或者class&#xff09;&#xff0c;不会因为之前已经获取过锁而导致锁的阻塞…

网络知识 | IP地址与MAC地址,TCP三次握手与四次挥手

IP地址与MAC地址 MAC地址&#xff08;Media Access Control Address&#xff09;&#xff0c;又称物理地址&#xff0c;用来标识网络中的设备&#xff0c;出厂时由生产网商写到网卡的BIOS中&#xff0c;具有唯一性&#xff0c;不可更改。 IP地址&#xff08;Internet Protoco…