mysql索引学习

Landsat9 地表温度反演方法 landsat9地表温度反演及缺失值处理方法 阅读详情

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

华为2024机考真题集合 2.中位数是指把一组数据从小到大排列,最中间的那个数,如果这组数据的个数是奇数,那最中间那个就是中位数,如果这组数据的个数为偶数,那就把中间的两个数之和除以 2,所得的结果就是中位数。在实际考试中会随机抽三道题目进行考察,其中两道100分卷题和一道200分卷题,总共400分。幼儿园组织活动,老师布置了一个任务:每个小朋友去了解与自己同一个小区的小朋友还有几个。3.查找整型数组中元素的众数并组成一个新的数组,求新数组的中位数。1.众数是指一组数据中出现次数量多的那个数,众数可以是多个。 阅读详情

相关推荐

思科路由器重分发(静态路由+OSPF动态路由+RIP动态路由)

思科路由器重分发(静态路由+OSPF动态路由+RIP动态路由)

2301_81256766的博客 1260

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

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

xzh_blog 4270

Logisim实战:手把手教你设计硬布线版MIPS CPU(多周期/8指令/附电路图)

本文是一份详细的Logisim实战指南,手把手教你设计一个采用硬布线控制的多周期MIPS CPU。文章深入剖析了硬布线控制与微程序控制的核心理念差异,并逐步讲解了从定义执行状态、构建状态跳转逻辑到生成控制信号、集成测试的完整流程,最终实现一个支持8条指令、可运行简单程序的处理器模型。

g9h0i1的博客 592

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

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

pan_junbiao的博客 8265

WSL中使用VMD图形化界面

【代码】WSL中使用VMD图形化界面。

handsome213的博客 840

1篇2章1节:在 Mac 上安装 Python,从环境检查到工具配置的完整指南

Python 是当今最流行的高级编程语言之一,广泛应用于数据分析、人工智能、自动化脚本和 Web 开发。虽然 macOS 曾自带 Python,但从 macOS 12.3 开始,系统不再默认提供可直接使用的版本,因此需要手动安装。本文将详细讲解如何在 Mac 上安装最新版本的 Python,如何验证安装是否成功,以及如何配置 IDLE 和 Python Launcher 等工具,为日常开发和学习打下坚实基础。即便你是完全的新手,也能按步骤完成环境搭建。

MD Code 848

【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

CloudCompare 和 PCL:点云网格化分析与处理

点云网格化是将点云数据转化为规则网格的过程,其主要思想是将离散的点云投影到一个平面上,然后对该平面进行划分,形成一系列小区域。在点云网格化方面,PCL 提供了各种算法和工具,可以实现高效的点云网格化操作。以上示例代码中,首先加载了输入的点云数据,然后通过设置合适的网格化算法参数,如搜索半径和最大三角形边长等,执行了网格化操作,最后将网格化结果保存到输出文件中。以上示例代码中,首先加载了输入的点云数据,然后通过设置合适的网格化参数,如分辨率等,执行了网格化操作,最后将网格化结果保存到输出文件中。

TechPulseZ的博客 1291

MySQL索引合并

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

sermonlizhi的博客 2764

OpenClaw与大语言模型(Claude/GPT/MiniMax)的集成架构与最优配置策略

摘要 本文探讨了OpenClaw框架与大语言模型(Claude/GPT/MiniMax)的集成架构与优化策略。大语言模型具有强大的自然语言处理能力,但集成面临API成本、响应延迟、上下文管理等挑战。OpenClaw采用分层架构设计,包括用户界面层、对话管理层、提示工程层、模型适配层和API调用层,支持多模型切换、智能对话管理和成本控制。系统通过模型适配层实现不同API的统一调用,并提供缓存、监控等优化机制。该集成方案能够充分发挥大语言模型的优势,为本地AI助理提供更智能的服务。

一键难忘的博客 1693

Qt/C++ 音视频开发 - FFmpeg 安卓版

通过将 FFmpeg 集成到 Qt/C++ 项目中,我们可以实现强大且灵活的音视频处理功能。本文介绍了在安卓平台上使用 FFmpeg 的基本步骤,包括初始化、解码、处理和编码等。实际应用代码示例展示了如何在安卓设备上播放视频。

走向CTO的路上... 1192

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

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

Andy_zhouSir的博客 583

linux系统宝塔服务器temp文件夹里总是被上传病毒php脚本

服务器时不时的会发送短信说你服务器有病毒,找到了这个tmp文件,删除了之后又有了。确实是有很多人就这么无聊,每天都攻击你的服务器。找了很久的原因,网上也提供了一大堆方法,但都是很简陋的答案,具体怎么操作并没有说。没办法只能自己去排查这个问题。从两个角度来考虑,第一是服务器系统问题,比如宝塔的漏洞。但一时半会看不出问题来。只能去排查自己的项目代码。最后了解到代码确实是存在漏洞的。但代码中也确实了很多的校验,为什么会存在漏洞了?这就不得不从上传的过程开始说起。

guiplan 1497

[MySQL学习笔记] 索引

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

qq_58547683的博客 1073

VC中sqlite的使用

在VC中对sqlite的使用,实现数据库大批数据的快速插入,读取数据库中的数据在ListCtrl中显示

计算机控制技术及应用

《计算机控制技术及应用》通过总结作者的科研成果和吸收国内外的先进理论、方法和技术,以计算机控制系统的网络化、开放化、智能化和集成化发展趋势为主线索,主要介绍计算机控制系统的基本概念和计算机控制系统的典型形式,计算机控制系统的数学描述与基本分析方法,以及数字PID控制器、最少拍控制系统、达林算法、状态变量设计法等设计方法及其各种改进算法。重点突出计算机控制系统输入输出通道接口的设计方法和典型控制系统的设计案例与实现方法等。

【MySQL学习笔记】关于索引

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

席万里的博客 1014

win10 跳过U8环境检测的IE WebControls.rar

win10 安装u8的时候 提示IE WebControls 不通过,这个工具可以欺骗u8的检查。 跳过U8环境检测的IE WebControls。提示导入失败后,重新检测通过。

MySQL学习(二)MySQL的索引

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

qq_44621930的博客 256

IEM模型,地表粗糙度模拟

利用微波反演土壤水分时候,利用IEM模型可以实现对随机地表的模拟

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、付费专栏及课程。

余额充值