mysql索引学习

汽车电缆选型实战:基于ISO 19642-3~12的7类电缆电压/材料/场景对照表 本文详细解析了基于ISO 19642-3~12标准的7类汽车电缆选型实战,涵盖电压等级、导体材料和场景应用的对照表。通过全参数速查表和典型选型陷阱分析,帮助工程师快速掌握从低压信号线到高压动力电缆的选型逻辑,提升新能源汽车与智能驾驶技术的安全性和可靠性。 阅读详情

mysql索引的基础和类型

  • 索引的原理

     要理解MySQL中索引的工作原理,最简单的方法就是去看一看一本书的索引部分:比如你想在一本书中寻找某个主题,一般会先看书的索引目录,找到对应的章节、对应的页码后就可以快速找到你想看的内容。

在MySQL中,存储引擎用类似的方法使用索引,其先在索引中查找对应的值,然后根据匹配的索引记录找到对应的数据行,最后将数据结果集返回给客户端。

  • 数据库索引的位置

默认是这里 (数据库安装目录\data\某个数据库 )中的数据库文件不像sqlserver,数据库文件都有后缀

例如:

数据文件:. myd

索引文件:. MYI

表定义文件:. fr

所以说数据库的索引和字典原理是一致的

  • 索引对性能的影响

优点:

1.大大减少服务器需要扫描的数据量

2.帮助服务器避免排序和临时表

3.将随机 I/O 变顺序 I/O

4.大大提高查询速度

缺点:

5.降低插入和更新的速度(在执行写操作时,会额外操作一遍索引)

   解释:当进行插入时,先要对索引列进行一遍索引查看,判断新增的索引列值是否重复。因此造成速度变慢。

6.占用磁盘

  解释:因为添加索引后,也会生成对应的索引文件。

  • 索引的使用场景

1.对于非常小的表,大部分情况下全表扫描效率会更高

2.对于中大型表来说,索引非常有效

3.特大型的表(上千万,上亿条数据),建立和使用索引的代价将会随之增长,可以使用分区技术来解决

  • 索引的类型

1.普通索引(Normal):也叫普通索引(index或key),它可以常规地提高查询效率。一张数据表中可以有多个常规索引。常规索引是使用最普遍的索引类型,如果没有明确指明索引的类型,我们所说的索引都是指常规索引。

2.唯一索引(Unique):与普通索引类似,但是具有唯一性约束

3.主键索引(Primary Key):特殊的唯一索引,不允许有空值

4.组合索引:将多个列组合在一起创建索引,可以覆盖多个列

5.外键索引:只有InnoDB的表才可以使用外键索引,保证数据的一致性,完整性,和实现级联操作

6.全文索引:Mysql自带的全文索引只能用于MYISAM,并且只能对英文进行全文检索

  • 主键索引和唯一索引的区别:

1.主键索引一定是唯一索引,但唯一索引不一定是主键索引

2.一个表只能有一个主键索引,但可能有多个唯一索引

3.主键可以与外键构成参照完整性约束,防止数据不一致

mysql索引的创建原则

1.表的主键、外键必须有索引

2.主键尽可能选择较短的数据类型,可以有效减少磁盘的占用,提高查询效率(比如int)

3.经常与其他表进行连接的表,在连接字段上应该建立索引

4.经常出现在Where子句中的字段,特别是大表的字段,应该建立索引

5.索引应该建在小字段上,对于大的文本字段甚至超长字段,不要建索引

6.频繁进行数据操作的表,不要建立太多的索引

7.避免创建过多索引,索引会额外占用磁盘空间,降低写操作效率

8.对字符串进行索引,应该制定一个前缀长度,可以节省大量的索引空间

9.复合索引的建立需要进行仔细分析;尽量考虑用单字段索引代替

10 在经常需要排序的列上创建索引,因为索引已经排序,这样查询可以利用索引的排序,加快排序查询时间

11 为经常出现在关键字order by、group by、distinct后面的字段,建立索引

----复合索引建立原则:

1)复合索引的几个字段是否经常同时以AND方式出现在Where子句中?单字段查询是否极少甚至没有?如果是,则可以建立复合索引;否则考虑单字段索引

2)如果复合索引中包含的字段经常单独出现在Where子句中,则分解为多个单字段索引

3)如果复合索引所包含的字段超过3个,那么仔细考虑其必要性,考虑减少复合的字段

mysql索引的注意事项

1. 限制表上的索引数目。对一个存在大量更新操作的表,所建索引的数目一般不要超过3个,最多不要超过5个。索引虽说提高了访问速度,但太多索引会影响数据的更新操作

2. 删除不再使用,或者很少被使用的索引。表中的数据被大量更新,或者数据的使用方式被改变后,原有的一些索引可能不再被需要。数据库管理员应当定期找出这些索引,将它们删除,从而减少索引对更新操作的影响

3.对复合索引,按照字段在查询条件中出现的频度建立索引。在复合索引中,记录首先按照第一个字段排序。对于在第一个字段上取值相同的记录,系统再按照第二个字段的取值排序,以此类推。因此只有复合索引的第一个字段出现在查询条件中,该索引才可能被使用。因此将应用频度高的字段,放置在复合索引的前面,会使系统最大可能地使用此索引,发挥索引的作用。

4.like查询,%不能在前,否则索引会失效

一般情况下不鼓励使用like操作,如果非使用不可,如何使用也是一个问题。like “%aaa%” 不会使用索引而like “aaa%”可以使用索引

5.索引不会包含有NULL值的列

只要列中包含有NULL值都将不会被包含在索引中,复合索引中只要有一列含有NULL值,那么这一列对于此复合索引就是无效的。所以我们在数据库设计时不要让字段的默认值为NULL。
6 索引可以使用: column is null 查询

引用:https://blog.youkuaiyun.com/m_nanle_xiaobudiu/article/details/79230125

【Bug已解决】NCCL timeout for validation 解决方案 训练用多卡 DDP / FSDP 正常,但一到或者进程直接 hang 在 eval 的某个集合通信上。最迷惑的是:训练阶段(有集合通信)完全正常,偏偏 eval 阶段(看起来更轻量)超时。因为 eval 阶段某些 rank 没参与 collective,导致参与的那部分 rank 永远等不到同伴。 阅读详情

相关推荐

模电学习笔记(十二)——跨阻放大器

模电学习笔记(十二) 跨阻放大器 跨组运算放大器是将电流信号转换成为电压信号,电流到电压增益基于反馈电阻。 设计目标: 输入 输出 带宽 电源 0A 100uA 0V 7V 20kHz 15V -15V 1.计算R1的值(增益电阻器) 2.计算C1的值满足电路带宽 ...

tang11081023的博客 2万+

MySQL索引合并Index Merge 一条SQL使用多个索引情况分析,以及索引合并失效情况

MySQL在5.0版本加入了索引合并优化(Index Merge),索引合并可以同时查询多个索引的范围扫描,并将其结果合并为一个。索引合并只可以合并来自单个表的索引扫描,而不支持跨多个表的扫描。合并可以生成其基础扫描的并集(unions)、交集(intersections)或交集的并集(unions-of-intersections)。

xzh_blog 4270

实验记录 | 如何拆分scATAC-seq数据成为单个细胞?(1、解决barcode问题)

在师兄的帮助下,我得到了师兄筛选过的细胞的barcode的数据,那么接下来我想根据这些barcode,将来源于同一个barcode的细胞的reads提取出来,这个还是一个蛮有技术含量的事情的,因为上次我有使用过perl的脚本进行提取,最后的实验结果很糟糕,故而这件事情一直搁置到现在,没有继续去做(我的脚本的编写能力还是有待于加强,可能是刚刚喝了奶茶,和老妈弟弟聊了好多闲话,很开心,觉得在某种程度上休息够了,对于工作也是一种非常快乐和积极的状态了)。 0。前期失败尝试回顾 ...

weixin_40640700的博客 1887

MySQL组合索引(多列索引)使用与优化

我们经常听到一些人说"把WHERE条件里的列都加上索引",其实这个建议非常错误。在多个列上建立单独的索引大部分情况下并不能提高MySQL的查询性能。MySQL 在5.0之后引入了一种叫“索引合并”(index merge)的策略,一定程度上可以使用表上的多个单列索引来定位指定的行。但是当服务器对多个索引做联合操作时,通常需要耗费大量CPU和内存资源在算法的缓存、排序和合并操作上,特别是当其中有些索引的选择性不高,需要合并扫描大量的数据的时候。这个时候,我们需要一个多列索引。 利用存储过程插入1000w

pan_junbiao的博客 8265

ST-Link使用教程

关于使用ST-Link烧录.hex文件教程。以及报错解决!适合刷ARM,使用STM32的教程!

qq_42977675的博客 1万+

使用Python下载ECMWF的ERA-5数据

一、注册账号 [官网]https://www.ecmwf.int/ 二、登录后获取下载key https://cds.climate.copernicus.eu/api-how-to 如图右侧红色框中的内容复制保存为TXT文件,并重命名为“.cdsapirc”,注意前面有点,保存在 C:\Users\username\.cdsapirc,(WINDOWS系统),username指当前电脑登录账户。 三、安装cdsapi库 以pycharm为例: 在pycharm中依次打开:File>setting

wise_sun的博客 7705

【MySQL】联合索引的使用

目录1、背景2、数据示例3、联合索引B+树结构4、联合索引的几种使用方式【1】全值匹配【2】部分列匹配【3】列前缀匹配【4】范围匹配【5】排序【6】分组5、总结 1、背景 联合索引就是给多个列建一个索引,使用联合索引时要满足最左匹配原则,不然会索引失效,本篇文章就通过explain执行计划研究一下联合索引,能让我们避免使用联合索引的一些坑。 2、数据示例 创建一张表,有三个索引:主键索引、普通索引、联合索引,我们重点关注联合索引: CREATE TABLE test1 ( id INT AUTO_I

qq_45795794的博客 2771

CAN通信:EB中配置CAN驱动,配置参数解析

以S32K314芯片说明,其他芯片不同,参数配置也有差异。

zhangxiaio1的博客 2168

MySQL索引合并

MySQL在一般情况下执行一个查询时最多只会用到单个二级索引,但存在有特殊情况,也可能在一个查询中使用到多个二级索引,MySQL中这种使用到多个索引来完成一次查询的执行方法称之为:索引合并/index merge 在上一篇文章《MySQL内核查询成本计算》中提到,会先分析单独使用这些索引的成本,最后还要分析是否可能使用到索引合并。 而使用索引合并的前提条件是要满足既定的一些规范,其中就包括下面三种: 一、Intersection合并 Intersection是交集的意思。某个查询可以使用多个二级索引,将从多

sermonlizhi的博客 2764

【网络安全】浅谈数据库攻击复现及相关安全优化

4、准备数据库服务器为了安全正式环境应该把数据库单独放一台服务器,只允许让应用服务器 IP 来访问数据库服务器,通过独立两者,就算其中一台发生问题,另一台也是好的,进一步降低了危险性。5、定时备份数据库开发定时备份功能,可以使用 Crontab,或者其他框架,设定周期备份数据,哪怕是数据丢失或被删除也可以快速恢复。

2401_88545587的博客 221

海康visionmaster-渲染结果:通过绑定流程或模块获取 渲染结果的方法

海康visionmaster-渲染结果:通过绑定流程或模块获取 渲染结果的方法

视觉人机器视觉的博客 2639

Java——mysql数据库相关知识点

数据库优化 1.prepareStatement一般来说比statement性能高; 2.有外键约束会影响插入和删除性能,如果程序能够保证数据的完整性,设计数据库时去掉外键; 3.关联查询比子查询效率高,使用join代替子查询; 4.将复杂的表拆分成几个结构简单的表,例如,将姓名和密码单独从用户表中独立出来; 5.sql语句全部大写,特别是列名和表名。特别是SQL命令的缓存功能,更加需要...

Andy_zhouSir的博客 583

2025年广东省职业院校技能大赛高职组“区块链技术应用”正式赛题解析答案(标准答案参阅)

某公司规划开发一个区块链供应链金融平台,包括核心企业、供应商、银行等角色,通过智能合约代码逐步构建区块链供应链金融平台的基本功能,实现银行向核心企业提供授信并发行数字凭证,企业与企业之间转让数字凭证。此外需要完成区块链供应链金融平台的前后端,实现基本的业务逻辑

我是网络安全兼技能大赛工程师,专注网络安全技术学习与技能大赛实战!持续分享最新的技术文章,帮你少走弯路,一起在技术赛道上进步~ 1270

[MySQL学习笔记] 索引

MySQL索引是提高查询效率的关键数据结构,主要采用优化的B+Tree结构,相比二叉树和B-Tree具有层次浅、检索快、支持范围查询等优势。索引分为聚集索引和二级索引,但使用不当会导致失效,如违反最左前缀法则、范围查询、运算操作等情况。通过慢查询日志、explain等工具可分析SQL性能。索引使用原则包括:对高频查询表建索引、选择高区分度字段、控制索引数量、优先使用联合索引等。合理使用索引能显著提升查询效率,但需注意索引会占用存储空间并影响写操作性能。

qq_58547683的博客 1073

文档:亲测可用解决vnc灰屏,黑屏,鼠标大黑叉情况

主要解决vnc-viewer灰屏,黑屏,鼠标大黑叉等现象,详细见文档。

数学建模模型总结

这是本人在两年内准备参加数学建模竞赛搜集到的模型资料,已经经过了本人的筛选和整理,希望能够对准备参加数学建模竞赛的学弟学妹们提供一些帮助!

【MySQL学习笔记】关于索引

索引下推是MySQL5.6的优化机制,默认是开启的,如果条件判断字段,在二级索引B+树里,就会下推到InnoDB存储引擎层来过滤,过滤完的记录,才会回表,相比没有索引下推的时候,可以减少回表次数。InnoDB会使用主键索引在B+树维护索引和数据文件,创建的联合索引也会生成一个索引树,同样都是B+树的结构,只不过它的data部分存储的是联合索引所在行的值。所以说,联合索引的优势在于支持索引覆盖查询,避免回表操作,并且对索引列的查询可直接利用索引的有序性完成排序,无需额外的外部排序,显著提升查询性能。

席万里的博客 1014

汉书HE8,好用的汇编代码编写工具

汉书HE8,好用的汇编代码编写工具早期编写汇编代码所用功能强大

MySQL学习(二)MySQL的索引

MySQL(二)MySQL的索引 索引介绍 索引是什么 ​ 官方介绍索引是帮助MySQL高效获取数据的数据结构。更通俗的说,数据库索引好比是一本书的目录,能加快数据库的查询速度。 索引的优劣势 优势: 可以提高数据检索的性能,降低数据库的IO成本,类似于书的目录。–检索 通过索引列对数据进行排序,降低数据排序的成本,降低了CPU的消耗。 --排序 被索引的列会自动进行排序,包括【单列索引】和【组合索引】,只是组合索引的怕排序要复杂一些。 如果按照索引的列进行排序,对应order by语句来说,效率

qq_44621930的博客 256

LinePhone3.2.7(android端最新版本) sip客户端

SIP客户端For android:LinePhone3.2.7(最新版本),官网地址:http://www.linphone.org/

MySQL索引学习总结

MySQL索引学习、MySQL索引优化难点和面试题

weixin_65565393的博客 1066

MySQL 索引 学习

MyISAM 和 InnoDB 索引的区别。编写sql函数插入百万数据。

Gettler的博客 2万+

MySQL索引学习笔记

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 文章目录前言一、pandas是什么?二、使用步骤1.引入库2.读入数据总结 前言 提示:这里可以添加本文要记录的大概内容: 例如:随着人工智能的不断发展,机器学习这门技术也越来越重要,很多人都开启了学习机器学习,本文就介绍了机器学习的基础内容。 提示:以下是本篇文章正文内容,下面案例可供参考 一、pandas是什么? 示例:pandas 是基于NumPy 的一种工具,该工具是为了解决数据分析任务而创建的。 二、使用步骤 1.引入库 代码

m0_46631321的博客 457

MySQL索引学习

我们本次先讲一下索引的种类,再详细讲一下我们常使用到的B+索引。最后说一下索引使用过程中的一些问题。

qq_38533859的博客 533

MySQL索引学习记录

一、背景 由于数据表设计的不好,导致查询速度过慢,加了索引之后,速度有显著的提升。索引很重要,但是扪心自问,对索引的了解还是处于一知半解的程度。于是乎,下定决心对这个知识点进行了进攻! 二、学习内容 从女朋友那边把《高性能MySQL》这本书偷偷的借过来进行学习(此书比较厚实,不宜携带用于空闲学习。) 目前主要是对其中的“创建高性能的索引”进行阅读 在学习过程中使用Xmind整理思路(...

weixin_33937778的博客 107

MySQL索引的学习

MySQL索引的学习 此教程基于【编程不良人】这一次彻底搞定MySQL索引、从此不在恐惧面试,哔哩哔哩链接:https://www.bilibili.com/video/BV19y4y127h4?p=1 1.索引的介绍及分类 1.什么是索引 index -官方定义:一种帮助mysql提高查询效率的数据结构 -索引的数据结构 -索引的优点: 1.大大加快数据查询速度 -索引的缺点: 1.维护索引需要耗费数据库资源 2.索引需要占用磁盘空间 3.当对表的数据进行增删改的时候,因为要维护索引,速度

qq_461491877的博客 595

Mysql索引学习

MySQL索引

weixin_43482965的博客 605

MySQL学习总结-索引概述

索引是排好序的快速查找数据结构!索引会影响where后⾯的查找,和order by 后⾯的排序。 1、索引分类 全局索引(FULLTEXT): 目前只有 MyISAM 引擎支持全局索引,它的出现是为了解决针对文本的模糊查询效率较低的问题。 哈希索引(HASH): 哈希索引是 MySQL 中用到的唯一 key-value 键值对的数据结构,很适合作为索引。HASH 索引具有一次定位的好处,不需要像树那样逐个节点查找,但是这种查找适合应用于查找单个键的情况,对于范围查找,HASH 索引的性能就会很低。 B-Tr

歆夜的博客 309

【MySQL索引学习】MySQL索引详细学习

【MySQL索引学习】MySQL索引详细学习

weixin_43950588的博客 420

MySQL索引的学习总结

花了一周的时间研究了一下MySQL的索引机制,做一点简单的总结和信息梳理吧。由于刚刚开始学习,如果哪里我理解的有误,还请大家提出宝贵意见。 1、关于索引的基本认识:      1.1、MySQL中索引被称为“键(key)”。      1.2、由存储引擎层来负责实现。               注意:不是服务层实现。服务层通过API和存储引擎层进行通信。MySQL服务器逻辑架构图

iCoding91 435
上一篇: yii2备忘录
下一篇: mysql关联查询和查询优化
QinAction
博客等级 码龄11年 20粉丝 66原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值