mysql索引(lnh25)

索引是一种数据结构,类似于书的目录,用于加速数据库中的数据查询。B+树是常见的索引实现方式,其叶子节点存储实际数据,减少查询次数。聚集索引以主键形式存在,叶子节点包含完整记录;辅助索引则用于非主键字段,叶子节点存储主键值。索引虽提升查询性能,但会降低写入速度,并需考虑创建和维护成本。
摘要由CSDN通过智能技术生成

介绍

知识回顾:数据都是存在硬盘上的,那查询数据不可避免的需要进行IO操作

索引就是一种数据结构,类似于书的目录。意味着以后再查数据应该先找目录再找数据,而不是用翻页的方式查询数据

索引在MySQL中也叫做“键”,是存储引擎用于快速找到记录的一种数据结构。

  • primary key

  • unique key

  • index key

注意:上面三种key前两种除了有加速查询的效果之外还有额外的约束条件(primary key:非空且唯一,unique key:唯一),而index key没有任何约束功能只会帮你加速查询

本质都是:通过不断地缩小想要获取数据的范围来筛选出最终想要的结果,同时把随机的事件变成顺序的事件,也就是说,有了这种索引机制,我们可以总是用同一种查找方式来锁定数据。

索引的影响:

索引的影响:

  • 在表中有大量数据的前提下,创建索引速度会很慢

  • 在索引创建完毕后,对表的查询性能会大幅度提升,但是写的性能会降低  

b+树

https://images2017.cnblogs.com/blog/1036857/201709/1036857-20170912011123500-158121126.pngicon-default.png?t=N2N8https://images2017.cnblogs.com/blog/1036857/201709/1036857-20170912011123500-158121126.png

只有叶子结点存放真实数据,根和树枝节点存的仅仅是虚拟数据

查询次数由树的层级决定,层级越低次数越少

一个磁盘块儿的大小是一定的,那也就意味着能存的数据量是一定的。如何保证树的层级最低呢?一个磁盘块儿存放占用空间比较小的数据项

思考我们应该给我们一张表里面的什么字段字段建立索引能够降低树的层级高度>>> 主键id字段

 索引类型

聚集索引(primary key)

聚集索引其实指的就是表的主键,innodb引擎规定一张表中必须要有主键。先来回顾一下存储引擎。

myisam在建表的时候对应到硬盘有几个文件(三个)?

innodb在建表的时候对应到硬盘有几个文件(两个)?frm文件只存放表结构,不可能放索引,也就意味着innodb的索引跟数据都放在idb表数据文件中。

特点:叶子结点放的一条条完整的记录

辅助索引(unique,index)

辅助索引:查询数据的时候不可能都是用id作为筛选条件,也可能会用name,password等字段信息,那么这个时候就无法利用到聚集索引的加速查询效果。就需要给其他字段建立索引,这些索引就叫辅助索引

特点:叶子结点存放的是辅助索引字段对应的那条记录的主键的值(比如:按照name字段创建索引,那么叶子节点存放的是:{name对应的值:name所在的那条记录的主键值})

select name from user where name='jack';

上述语句叫覆盖索引:只在辅助索引的叶子节点中就已经找到了所有我们想要的数据

select age from user where name='jack';

上述语句叫非覆盖索引,虽然查询的时候命中了索引字段name,但是要查的是age字段,所以还需要利用主键才去查找

### 回答1: lnh-课件代码python全栈3期是指由某个机构或教育平台提供的关于Python全栈开发的第三期课程。在该课程中,学员将学习和掌握Python编程语言及其相关的全栈开发技术。 首先,在课程开始时,学员将学习Python编程的基础知识,包括语法、数据类型、变量、控制流等等。学员将通过理论讲解和实践编程练习,逐步掌握Python的基本概念和编程技巧。 接着,课程将引导学员学习Python的Web开发框架,如Django等。学员将学会使用这些框架搭建和开发功能强大的Web应用程序,并了解前后端的交互原理。通过项目实践,学员将学会如何设计数据库、处理用户输入、处理表单和实现用户认证等等。 除了Web开发,课程还会涉及其他Python相关的技术,如爬虫、数据处理、数据可视化、机器学习等等。学员将学习如何使用Python进行数据抓取和处理,并将学到的知识应用于实际项目中。 在课程的最后阶段,学员将有机会进行一个完整的项目实践,将之前学到的知识应用到一个真实的项目中。这个项目将涵盖从需求分析、系统设计、开发、测试到部署等全过程,帮助学员加深对Python全栈开发的理解和实践能力。 总而言之,lnh-课件代码python全栈3期是一门旨在帮助学员全面掌握Python全栈开发技术的课程。通过系统的学习和实践,学员将能够独立完成一个完整的Python全栈项目,并具备进一步深入学习和实践的基础。 ### 回答2: lnh-课件代码是Python全栈3期课程的代码库。在这个代码库中,我们可以找到与课程相关的所有代码示例和案例。 这个代码库是为了帮助学员更好地学习和理解课程内容而创建的。在Python全栈3期课程中,我们将学习如何利用Python语言来构建全栈应用程序,涵盖了从前端开发到后端开发的所有关键知识点。 在lnh-课件代码中,我们可以找到各种不同的文件和文件夹。这些文件和文件夹包括课程中所涵盖的各个主题和模块,例如HTML、CSS、JavaScript、Flask、Django等。每个文件和文件夹都包含了与该主题相关的代码示例和案例。 通过查看lnh-课件代码,学员可以更好地理解课程中所讲述的理论知识,并且能够将其应用于实际的项目中。这样,学员可以更好地掌握Python全栈开发的技能,提升自己在职业生涯中的竞争力。 总而言之,lnh-课件代码是Python全栈3期课程的代码库,包含了与课程内容相关的所有代码示例和案例。通过使用这个代码库,学员可以更好地学习和理解课程内容,并应用于实际项目中。 ### 回答3: lnh-课件代码python全栈3期是一门针对Python全栈开发的课程。这门课程旨在教授学员使用Python语言进行全栈开发,涵盖从前端到后端的所有内容。 在这门课程中,学员将学习使用Python编写前端代码,包括HTML、CSS和JavaScript,掌握前端开发的基本概念和技术。 同时,学员还将学习使用Python开发后端代码,包括使用框架如Django或Flask进行Web应用程序的开发,以及数据库的设计和管理。 此外,该课程还将重点介绍如何进行系统部署、性能优化以及安全防护等方面的知识,以帮助学员全面打造一个完整的Python全栈应用程序。 该课程将提供大量的实践项目,让学员能够通过实际操作来巩固自己所学的知识。此外,还会有针对性的练习和作业,以确保学员能够灵活应用所学的知识。 授课老师将是经验丰富的专业人士,在教学过程中将提供详细的实例和案例,帮助学员更好地理解和应用所学的内容。 总之,lnh-课件代码python全栈3期是一门集中教授Python全栈开发技术的课程,通过系统地学习,学员能够掌握使用Python开发全栈应用程序的能力,并在实践中不断提升自己的技术水平。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

骑猪去兜风z1

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值