数据库(第二天) 索引模块

索引模块:

为什么要使用索引?

能够避免全表扫描,提升检索效率

什么的信息能够成为索引?

主键,唯一键,具有区分性的

主键和唯一键的区别  :

  • 唯一性:是,是
  • 能够为空:否,可
  • 主键一个表至多一个,唯一键可以有多个
  • 允许组合,类似(a,b)坐标,不能重复

外键:

  • 要求在从表设置外键关系
  • 从表的外键列的外键列类型与主表的关联列的类型要求一致或者兼容,名称无要求
  • 主表的关联列必须是一个key(一般是主键或者唯一键)
  • 插入数据时,先插主表再插从表
  • 删除数据时,先删从表再删主表

 索引的数据结构:

二叉查找树,B-Tree,B+-Tree,Hash

二叉查找树:按照大小按左中右排序,左子树和右子树高度差不大于1;

时间复杂度为 O(logN)

B-Tree:根节点至少包括两个孩子,树中每个节点最多含有m个孩子(m>=2),除根节点和叶节点,其他每个节点至少拥有Ceil(m/2)个孩子,所有叶节点都在同一层

B+-Tree是B树的变体,其定义基本与B树相同,除了:

1.非叶子节点的子树指针与关键字个数相同

2.非叶子节点的子树指针P[i],指向关键字值[K[i],K[i+1])的子树

3.非叶子节点仅用来索引,数据都保存在叶子节点中

4.所有叶子节点均有一个链指针指向下一个叶子结点

B+树更适合用来做存储索引:

1.磁盘读写代价更低

2.查询效率更加稳定 

3.更有利于对数据库的扫描

索引模块:

密集索引和稀疏索引的区别:

密集索引文件中的每个搜索码值都对应一个索引值

稀疏索引文件只为索引码的某些值建立索引项(相当于分块了)

Innodb :

密集索引,就是通过主索引直接检索即可;

稀疏索引,利用辅助键获取主键信息,再去访问主键索引,获得我们想要的数据

 如何定位并优化慢查询Sql

联合索引的最左匹配原则的成因

索引是建立得越多越好吗

 

慢查询优化:

根据慢日志定位慢查询sql

使用explain等工具分析sql

修改sql或者尽量让sql走索引

联合索引的最左匹配原则的成因

最左匹配原则:

https://blog.csdn.net/sinat_41917109/article/details/88944290

索引是建立得越多越好吗

数据量小的表不需要建立索引,需要花更多时间和空间;

CCF大数据与计算智能大赛-面向电信行业存量用户的智能套餐个性化匹配模型联通赛-复赛第二名-【多分类,embedding】.zip项目工程资源经过严格测试可直接运行成功且功能正常的情况才上传,可轻松复刻,拿到资料包后可轻松复现出一样的项目,本人系统开发经验充足(全领域),有任何使用问题欢迎随时与我联系,我会及时为您解惑,提供帮助。 【资源内容】:包含完整源码+工程文件+说明(如有)等。答辩评审平均分达到96分,放心下载使用!可轻松复现,设计报告也可借鉴此项目,该资源内项目代码都经过测试运行成功,功能ok的情况下才上传的。 【提供帮助】:有任何使用问题欢迎随时与我联系,我会及时解答解惑,提供帮助 【附带帮助】:若还需要相关开发工具、学习资料等,我会提供帮助,提供资料,鼓励学习进步 【项目价值】:可用在相关项目设计中,皆可应用在项目、毕业设计、课程设计、期末/期中/大作业、工程实训、大创等学科竞赛比赛、初期项目立项、学习/练手等方面,可借鉴此优质项目实现复刻,设计报告也可借鉴此项目,也可基于此项目来扩展开发出更多功能 下载后请首先打开README文件(如有),项目工程可直接复现复刻,如果基础还行,也可在此程序基础上进行修改,以实现其它功能。供开源学习/技术交流/学习参考,勿用于商业用途。质量优质,放心下载使用。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值