MySQL--索引(3)
1.索引创建注意点
选择合适的字段
1.不为 NULL 的字段
索引字段的数据应该尽量不为 NULL,因为对于数据为 NULL 的字段,数据库较难优化。如果字段频繁被查询,但又避免不了为 NULL,建议使用 0,1,true,false 这样语义较为清晰的短值或短字符作为替代。
2.被频繁查询的字段
我们创建索引的字段应该是查询操作非常频繁的字段。
3.被作为条件查询的字段
被作为 WHERE 条件查询的字段,应该被考虑建立索引。
4.被经常频繁用于连接的字段
经常用于连接的字段可能是一些外键列,对于外键列并不一定要建立外键,只是说该列涉及到表与表的关系。对于频繁被连接查询的字段,可以考虑建立索引,提高多表连接查询的效率。
不合适创建索引的字段
1.被频繁更新的字段应该慎重建立索引
虽然索引能带来查询上的效率,但是维护索引的成本也是不小的。 如果一个字段不被经常查询,反而被经常修改,那么就更不应该在这种字段上建立索引了。
2.不被经常查询的字段没有必要建立索引
3.尽可能的考虑建立联合索引而不是单列索引
因为索引是需要占用磁盘空间的,可以简单理解为每个索引都对应着一颗 B+树。如果一个表的字段过多,索引过多,那么当这个表的数据达到一个体量后,索引占用的空间也是很多的,且修改索引时,耗费的时间也是较多的。如果是联合索引,多个字段在一个索引上,那么将会节约很大磁盘空间,且修改数据的操作效率也会提升。
4.注意避免冗余索引
冗余索引指的是索引的功能相同,能够命中 就肯定能命中 ,那么 就是冗余索引如(name,city )和(name )这两个索引就是冗余索引,能够命中后者的查询肯定是能够命中前者的 在大多数情况下,都应该尽量扩展已有的索引而不是创建新索引。
5.考虑在字符串类型的字段上使用前缀索引代替普通索引
前缀索引仅限于字符串类型,较普通索引会占用更小的空间,所以可以考虑使用前缀索引带替普通索引。
使用索引一定能提高查询性能吗?
大多数情况下,索引查询都是比全表扫描要快的。但是如果数据库的数据量不大,那么使用索引也不一定能够带来很大提升。
2.索引失效的因素
前四个为重点
查询条件不是最左前缀:
如果你有一个复合索引(联合索引),MySQL可以使用该索引的最左前缀来优化查询。如果查询条件没有从索引的最左边列开始,那么MySQL可能不会使用该索引。查询条件中的函数操作:
如果在查询条件中对索引列使用了函数或表达式(如WHERE YEAR(date_column) = 2023
),那么MySQL将无法使用索引,因为索引是基于列的原始值建立的,而不是基于函数的结果。隐式类型转换:
如果查询条件中的数据类型与索引列的数据类型不匹配,并且MySQL必须进行隐式类型转换才能进行比较,那么索引可能不会被使用。例如,如果索引列是整型(INT),但查询条件中使用了字符串('123'),则可能发生隐式类型转换。LIKE语句的开头是通配符:
当使用LIKE
语句进行模糊匹配,并且匹配模式的开头是通配符(如%abc
),MySQL将无法使用索引来加速查询,因为索引是基于列的固定前缀建立的。但是,如果通配符不在开头(如abc%
),则索引仍然可以被使用。OR条件:
在某些情况下,如果查询条件包含OR
,并且OR
连接的两个条件分别针对不同的索引列,MySQL可能会选择不使用索引而执行全表扫描。这取决于查询的具体情况和MySQL的优化器决策。索引统计信息过时:
如果MySQL的索引统计信息(如表的行数、索引的分布等)过时,那么优化器可能会基于不准确的信息来做出不使用索引的决策。在这种情况下,可以通过运行ANALYZE TABLE
命令来更新统计信息。索引选择性低:
如果索引列中的大多数值都是相同的(即索引的选择性很低),那么MySQL可能会认为使用索引的代价太高,从而选择全表扫描。查询优化器的决策:
最终,是否使用索引取决于MySQL查询优化器的决策。在某些情况下,即使理论上可以使用索引,优化器也可能因为各种内部因素(如内存限制、查询缓存的考虑等)而选择不使用索引。最后:了解和避免这些导致索引失效的因素,可以帮助你优化MySQL查询的性能。在实际应用中,可以通过
EXPLAIN
命令来查看MySQL如何执行你的查询,并检查是否使用了索引。(要使用EXPLAIN
命令,你只需在 SQL 语句前加上EXPLAIN
关键字。)
相关文章:
![](https://www.ngui.cc/images/no-images.jpg)
MySQL--索引(3)
1.索引创建注意点 选择合适的字段 1.不为 NULL 的字段 索引字段的数据应该尽量不为 NULL,因为对于数据为 NULL 的字段,数据库较难优化。如果字段频繁被查询,但又避免不了为 NULL,建议使用 0,1,true,false 这样语义较为清晰的短值或…...
![](https://i-blog.csdnimg.cn/direct/210d5271466e4da2a384e468252537b9.png)
sql_exporter通过sql收集业务数据并通过prometheus+grafana展示
下载并解压安装sql_exporter wget https://github.com/free/sql_exporter/releases/download/0.5/sql_exporter-0.5.linux-amd64.tar.gz #解压 tar xvf sql_exporter-0.5.linux-amd64.tar.gz -C /usr/local/修改主配置文件 cd /usr/local/ mv sql_exporter-0.5.linux-amd64 s…...
![](https://i-blog.csdnimg.cn/direct/b39b03540d6a4d8caabfa160df00f077.png)
pytorch 笔记:torch.optim.Adam
torch.optim.Adam 是一个实现 Adam 优化算法的类。Adam 是一个常用的梯度下降优化方法,特别适合处理大规模数据集和参数的深度学习模型 torch.optim.Adam(params, lr0.001, betas(0.9, 0.999), eps1e-08, weight_decay0, amsgradFalse, *, foreachNone, maximizeFa…...
![](https://i-blog.csdnimg.cn/direct/0e64497f61974922b3e87d9e5dd9c7ed.png)
开源AI智能名片小程序:深度剖析体验优化策略,激活小程序生命力的运营之道
摘要:在移动互联网的浪潮中,微信小程序凭借其无需下载、即用即走的特性,迅速成为企业连接用户、拓展市场的重要桥梁。开源AI智能名片小程序,作为这一领域的创新尝试,旨在通过融合人工智能技术与传统商务名片的概念&…...
![](https://i-blog.csdnimg.cn/direct/ba89fb95b98141ff989a85aa233766bb.png)
ML.Net 学习之使用经过训练的模型进行预测
什么是ML.Net:(学习文档上摘的一段:ML.NET 文档 - 教程和 API 参考 | Microsoft Learn 【学习入口】) 它使你能够在联机或脱机场景中将机器学习添加到 .NET 应用程序中。 借助此功能,可以使用应用程序的可用数据进行自…...
![](https://www.ngui.cc/images/no-images.jpg)
为什么 centos 下使用 tree 命令看不见 .env 文件
CentOS 下使用 tree 命令看不到 .env 文件主要有两个可能的原因: 默认情况下,tree 命令不显示隐藏文件。在 Linux 系统中,以点(.)开头的文件或目录被视为隐藏文件。.env 文件就属于这种隐藏文件。 您可能没有安装 tree 命令。如果在 CentOS …...
![](https://www.ngui.cc/images/no-images.jpg)
数据库基础与性能概述及相关术语
在计算机科学领域,特别是数据库技术中,掌握与数据库性能相关的专业词汇对于数据库管理员、开发人员及数据分析师等专业人员来说至关重要。以下是一篇关于计算机必背单词——数据库性能相关的详细解析. 一、数据库基础与性能概述 数据库是计算机科学中的…...
![](https://www.ngui.cc/images/no-images.jpg)
docker基于外部缓存加速构建方案
开启外部缓存 http://your_apt_cacher_ng_server:3142 是一个示例 URL,表示需要设置的 apt-cacher-ng 代理服务器的地址。apt-cacher-ng 是一个本地代理服务器,可以缓存从官方 APT 仓库下载的软件包,从而加速后续的下载过程,并减…...
![](https://i-blog.csdnimg.cn/direct/88f97c33a13b45f3ba5bd7ee360a3a5d.png)
【C语言】 作业11 链表+实现函数封装
递归实现链表数据互换,纯不会,明天再说 1、链表实现以下功能 链表,创建链表,申请节点,判空,头插,遍历输出,通过位置查找节点,任意位置插入,头删,…...
![](https://www.ngui.cc/images/no-images.jpg)
【Ubuntu】Ubuntu20修改MAC地址
文章目录 一、临时修改MAC地址(重启后复原)二、永久修改MAC地址 场景:在做虚拟机复制时,复制完的两台虚拟机存在相同MAC,导致无法分别分配IP。 解决:修改一台虚拟机的MAC地址。 一、临时修改MAC地址&#…...
![](https://i-blog.csdnimg.cn/direct/fd23f84e687e4db89945a0f4f56ce769.png)
ClickHouse集成LDAP实现简单的用户认证
1.这里我的ldap安装的是docker版的 docker安装的化就yum就好了 sudo yum install docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin sudo systemctl start docker 使用下面的命令验证sudo docker run hello-world docker pull osixia/openl…...
![](https://www.ngui.cc/images/no-images.jpg)
C语言-预处理详解
1.预处理符号 C语言中设置了一些预定义符号,可以直接使用,预定义符号是在预处理期间处理的。 __FILE__//代表当前进行编译的源文件 __LINE__//文件当前行号 __DATE__//文件当前日期 __TIME__//文件当前时间 __STDC__//如果编译器遵循ANSIC,…...
![](https://i-blog.csdnimg.cn/direct/5b750527899741539009be510fd88c51.png)
计算机网络-VLAN间通信(三层通信)模拟实现
目录 VLAN基础知识VLAN和普通LAN区别划分VLAN的原因 实现VLAN间的通信(三层通信)方案一:多臂路由方案二:单臂路由方案三:三层交换机 VLAN基础知识 VLAN(Virtual Local Area Network,虚拟局域网…...
![](https://i-blog.csdnimg.cn/direct/1481623037734a26a76029038c775289.gif)
【JAVA】数据类型及变量
🎉欢迎大家收看,请多多支持🌹 🥰关注小哇,和我一起成长🚀个人主页🚀 Java的数据类型 可以分为两类,基本数据类型和引用数据类型 基本数据类型有4类8种,4类分别是整型 浮…...
![](https://i-blog.csdnimg.cn/direct/4f2c9dddb9eb472ca855c85c15461a00.png)
微软蓝屏事件暴露的网络安全问题
目录 1.概述 2.软件更新流程中的风险管理和质量控制机制 2.1.测试流程 2.2.风险管理策略 2.3.质量控制措施 2.4.小结 3.预防类似大规模故障的最佳方案或应急响应对策 3.1. 设计冗余系统 3.2. 实施灾难恢复计划 3.3. 建立高可用架构 3.4. 类似规模的紧急故障下的响应…...
![](https://www.ngui.cc/images/no-images.jpg)
11 - FFmpeg - 编码 AAC
Planar 模式是 ffmpeg内部存储模式,我们实际使用的音频文件都是Packed模式的。 FFmpeq解码不同格式的音频输出的音频采样格式不是一样。 其中AAC解码输出的数据为浮点型的 AV_SAMPLE_FMT_FLTP 格式,MP3 解码输出的数据为 AV_SAMPLE_FMT_S16P 格式(使用的…...
![](https://img-blog.csdnimg.cn/img_convert/bed95aff140833ffce15e5dd16bed46a.png)
OS Copilot初体验的感受与心得
本文介绍体验操作系统智能助手OS Copilot后,个人的一些收获、体验等。 最近,抽空体验了阿里云的操作系统智能助手OS Copilot,在这里记录一下心得与收获。总体观之,从个人角度来说,感觉这个OS Copilot确实抓住了不少开发…...
![](https://www.ngui.cc/images/no-images.jpg)
Ajax学习笔记
文章目录标题 Ajax学习笔记axios使用axios请求拦截器axios响应拦截器优化axios响应结果 form-serialize插件图片上传HTTP协议请求报文相应报文接口文档 AJAX原理 - XMLHttpRequest使用XMLHttpRequestXMLHttpRequest - 查询参数查询字符串对象 XMLHttpRequest - 数据提交 事件循…...
![](https://www.ngui.cc/images/no-images.jpg)
医学深度学习与机器学习融合的随想
医学深度学习与机器学习融合的随想 近年来,深度学习(图像类)和机器学习在医学领域的应用取得了飞速发展,为医学影像分析、疾病诊断和预后预测等领域带来了革命性的变革。深度学习擅长从复杂数据中提取高层次特征,而机…...
![](https://www.ngui.cc/images/no-images.jpg)
坑人的macos tar 命令 (实际上是bsdtar)换用 gnu tar
周末 看着笔记本上好用的朗文当代高级词典(mac版)和其它两部词典,准备复制到黑苹果台式机上去。考虑到词典内容有太多小文件,普通复制传输太慢,毫无疑问用 tar 打包肯定快而且能保留原始文件的各种信息。命令如下: time tar czf …...
![](https://i-blog.csdnimg.cn/direct/7d91a920a1f4444ea48b1ec060dc8bc8.png)
【SpringBoot3】全局异常处理
【SpringBoot3】全局异常处理 一、全局异常处理器step1:创建收入数字的页面step2:创建控制器,计算两个整数相除step3:创建自定义异常处理器step5:创建给用提示的页面step6:测试输入(10/0) 二、BeanValidato…...
![](https://www.ngui.cc/images/no-images.jpg)
vue-Treeselect
一、Node KeyTypeDescriptionid (required)Number | String用于标识树中的选项。其值在所有选项中必须是唯一的label (required)String用于显示选项childrennode[] | null声明一个分支节点。你可以: 1) 设置为由a组成的子选项数组。叶节点,b…...
![](https://www.ngui.cc/images/no-images.jpg)
【机器学习框架TensorFlow和PyTorch】基本使用指南
机器学习框架TensorFlow和PyTorch:基本使用指南 目录 引言TensorFlow概述 TensorFlow简介TensorFlow的基本使用 PyTorch概述 PyTorch简介PyTorch的基本使用 TensorFlow和PyTorch的对比结论 引言 随着深度学习的快速发展,机器学习框架在实际应用中起到…...
![](https://www.ngui.cc/images/no-images.jpg)
matlab 中的methods(Access = protected) 是什么意思
gpt版本 在 MATLAB 中,methods 是用于定义类方法的一部分。(Access protected) 是一种访问控制修饰符,它限制了方法的访问权限。具体来说,当你在类定义中使用 methods(Access protected) 时,你是在定义只有类本身及其子类可以访…...
![](https://img-blog.csdnimg.cn/direct/72c41463e0f84cc7b3890ffbd4095058.png)
【漏洞复现】Netgear WN604 downloadFile.php 信息泄露漏洞(CVE-2024-6646)
0x01 产品简介 NETGEAR WN604是一款由NETGEAR(网件)公司生产的无线接入器(或无线路由器)提供Wi-Fi保护协议(WPA2-PSK, WPA-PSK),以及有线等效加密(WEP)64位、128位和152…...
![](https://www.ngui.cc/images/no-images.jpg)
图像处理 -- ISP调优(tuning)的步骤整理
ISP调优流程培训文档 1. 硬件准备 选择合适的图像传感器:根据项目需求选择合适的传感器型号。搭建测试环境:包括测试板、光源、色彩卡和分辨率卡等。 2. 初始设置 寄存器配置:初始化传感器的寄存器设置,包括曝光、增益、白平衡…...
![](https://i-blog.csdnimg.cn/direct/28f3fd5fb4e14e989d5aeebbb39726d3.png)
【中项】系统集成项目管理工程师-第4章 信息系统架构-4.2系统架构
前言:系统集成项目管理工程师专业,现分享一些教材知识点。觉得文章还不错的喜欢点赞收藏的同时帮忙点点关注。 软考同样是国家人社部和工信部组织的国家级考试,全称为“全国计算机与软件专业技术资格(水平)考试”&…...
![](https://i-blog.csdnimg.cn/direct/c20ee9c1516a403fa6e107ce710041f9.png)
node.js中nodemon : 无法加载和使用问题,这是由于windows安全策略影起的按如下操作即可
1、用管理员权限打开vscode 2、文件终端中打开,输入 Set-ExecutionPolicy -Scope CurrentUser 3、再输入RemoteSigned 4、使用get-ExecutionPolicy查看权限,可以看到变为了RemoteSigned 重启问题解决...
![](https://i-blog.csdnimg.cn/direct/d763ac18569f41e68ade4a240d2f23f7.png)
【SD】 Stable Diffusion(SD)原理详解与ComfyUI使用 2
Stable Diffusion(SD)原理详解与ComfyUI使用 Stable Diffusion(SD)原理详解与ComfyUI使用1. SD整体结构2. Clip(文本编码器)3. Unit(生成模型)4. VAE(变分自编码器&#…...
![](https://i-blog.csdnimg.cn/direct/9c6266b263af4929943a83aeeb0f3719.png)
【学习笔记】无人机系统(UAS)的连接、识别和跟踪(七)-广播远程识别码(Broadcast Remote ID)
目录 引言 5.5 广播远程识别码(Broadcast Remote ID) 5.5.1 使用PC5的广播远程识别码 5.5.2 使用MBS的广播远程识别码 引言 3GPP TS 23.256 技术规范,主要定义了3GPP系统对无人机(UAV)的连接性、身份识别、跟踪及…...
![](/images/no-images.jpg)
做垂直平台网站/公司企业网站建设
今天我在设置cookie的时候,发现cookie的值获取有问题 问题代码 //创建cookie,将当前的时间作为cookie的值发送给客户端String currentTimenew SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(new Date());Cookie cookienew Cookie("lastAccess&quo…...
wordpress同步百度/注册城乡规划师教材
CPU时序: v振荡周期:为单片机提供定时信号的振荡源的周期(晶振周期或外加振荡周期) v状态周期:2个振荡周期为1个状态周期,用S表示。振荡周期又称S周期或时钟周期。 v机器周期:1个机器周期含6…...
![](https://img-blog.csdnimg.cn/img_convert/6e24e0a756dd8f71ca60a958aecc5811.png)
app设计网站推荐/谷歌 chrome 浏览器
UDP(User Data Protocol,用户数据报协议)(1) UDP是一个非连接的协议,传输数据之前源端和终端不建立连接,当它想传送时就简单地去抓取来自应用程序的数据,并尽可能快地把它扔到网络上。在发送端,UDP传送数据的速度仅仅是…...
![](/images/no-images.jpg)
买机票便宜的网站建设/合肥百度推广优化排名
1,重载是用来描述同名函数具有相同或者相似功能,但是参数个数或者类型顺序不一样的函数管理操作 返回值不能作为重载的条件 2,重写是子类对父类同名函数的重新定义 二者区别: 1,作用域不同:重载是在同一…...
![](https://s3.51cto.com//wyfs02/M02/0A/96/wKiom1LNHHST6ZlQAAAyjIo_jkQ447_middle.jpg)
做网站1g网页空间够吗/如何制作网页设计
2019独角兽企业重金招聘Python工程师标准>>> 在Centos7 系统中使用supermin制作CentOS6 的Docker镜像 jin771998569关注0人评论1499人阅读2018-01-19 17:08:40 使用supermin制作CentOS的Docker镜像 需求 supermin 在Centos7 里面安装默认只能够构建Centos7 版本的基…...
![](/images/no-images.jpg)
高仿做的好点的网站/seo优化的基本流程
课程首页地址:http://blog.csdn.net/sxhelijian/article/details/7910565,本周题目链接:http://blog.csdn.net/sxhelijian/article/details/9078413【项目4】写处理C源代码的程序 (1)读入一个C程序,判…...