知识点回顾 | 数据库优化-索引
Posted 一起写程序
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了知识点回顾 | 数据库优化-索引相关的知识,希望对你有一定的参考价值。
知识点目录:
问题目录:
索引:
问题1)数据库存储的映射关系?也就是记录是如何存储在磁盘上的?
2,索引的简单分类
问题1)为什么需要索引和索引的概念?
问题2)索引的组成部分?
问题3)索引文件的存储结构?
问题3)索引的一般特性?
问题4)索引存在的问题?
问题5)评价索引性能的好坏?
问题6)稀疏索引和稠密索引?
稀疏索引:索引项是主文件中的部分记录。
问题6.1)稀疏索引如何定位记录?
例子:定位索引字段为k的记录?
稀疏索引的优缺点:
问题6.2)如何解决稀疏索引相对稠密索引速度慢的方法?
问题6.3)稠密索引如何确定主文件中的记录?
候选键的稠密索引:
非候选键的稠密索引:
非候选码的三种对比:
问题1)数据库存储的映射关系?也就是记录是如何存储在磁盘上的?
表,记录,磁盘块之间的关系?
一个表一个主索引文件,索引文件的索引项是记录和磁盘块。
如何找到一条条记录的?
首先找到那张表,再找到表的索引文件,通过索引项记录找到磁盘块。
索引:
内容:1,为什么需要索引与索引的定义?
2,索引的简单分类
3,B+树索引。
4,散列索引。
重点:1)理解索引的作用?应用索引优化改进数据库查询性能的方法?
2)理解不同类型索引的概念:稠密索引和稀疏索引,主索引和辅助索引,聚簇索引和非聚簇索引,倒排索引,多级索引等。
3)理解B+树索引,怎么建立,维护和利用B+树索引(算法层面)
4)理解散列索引,包括静态散列索引与动态散列索引(算法层面)
问题1)为什么需要索引和索引的概念?
主要借鉴了字典的设计,字典有索引,索引项包括关键字和页码。
如果直接在主文件上进行查找,内存无法全部装载下,需要进行外查找,这样的消耗是很大。
索引文件要小的多,索引文件可以全部装载到内存中,快速定位后通过行指针去主文件中查找。
索引定义:索引是建立在存储表(table)基础之上,有助于无需检查所有记录而快速定位的一种辅助存储结构。
问题2)索引的组成部分?
索引文件是由索引项组成。每个索引项包括两部分,索引字段和行指针。
索引字段:主文件中的某些列。(通常存储这些列的所有值(稠密索引),存储的是字段的部分值(稀疏索引))。
行指针:指向主文件中字段值在磁盘上的存储位置。
索引文件:存储索引项的文件
主文件:存储表(table)就是主文件。
问题3)索引文件的存储结构?
散列索引文件:
排序索引文件:
问题3)索引的一般特性?
1,一个表上可以有多个索引文件,每一个索引文件的索引项可以包括多个属性。
2,主文件有索引时,更新操作必须同步更新索引文件和主文件。否则出现数据不一致。
索引的更新是DBMS管理系统自动做的。
3,索引文件是一种辅助的存储结构,其存在与否与主文件没有影响。
问题4)索引存在的问题?
索引虽然提高了查找的效率,但同时增加了存储空间和维护成本。(主文件更新,索引文件也要更新)
问题5)评价索引性能的好坏?
访问时间
插入时间
删除时间
空间负载
支持存取的有效性:比如:支持的是属性的限定值(是否符合单一值,还是支持属性的限定范围的值(是否符合一定范围))
问题6)稀疏索引和稠密索引?
对于主文件中每一个不同值记录(包含重复索引字段),都有一个索引项和它对应,指明该记录所在位置,这样的索引称稠密索引(dense index)
稠密索引: 索引项和所有不同值记录一一对应。
非稠密索引(稀疏索引):
对于主文件中部分记录,有索引项和它对应,这样的索引称非稠密索引(undense index)。
稀疏索引:索引项是主文件中的部分记录。
问题6.1)稀疏索引如何定位记录?
注意:
1, 稀疏索引文件中不存在搜索码的值,不代表主文件中没有对应搜索码的记录。
2, 使用稀疏索引,主文件必须是按索引字段属性进行排序存储。
例子:定位索引字段为k的记录?
首先找到小于k的最大索引项。
从该索引项对应的主文件记录开始顺序进行table的检索。
稀疏索引的优缺点:
优点:占用空间更小,维护任务更轻。
缺点:相对稠密索引速度慢。(因为不是直接找到主文件中的记录)
问题6.2)如何解决稀疏索引相对稠密索引速度慢的方法?
让索引项不指向记录指针,而是指向记录所在的存储块的指针,即每一存储块有一个索引项,而不是每条记录有一索引项 --- 主索引
问题6.3)稠密索引如何确定主文件中的记录?
注意:
1, 无论是候选键属性的稠密索引,还是非候选键属性的稠密索引,索引文件中不存在的搜索码的值,就代码主文件中没有对应搜索码的记录。
2, 候选键: 可以唯一标识一条记录的属性集合。
候选键的稠密索引:
因为候选键是唯一的,所以索引项和主文件记录是一一对应的。
非候选键的稠密索引:
第一种:索引字段排序且不重复,主文件按照(非候选码)索引字段排序存储。
第二种:索引字段排序且重复。主文件不用按照索引字段排序。
第三种:如果要求索引字段排序且不重复,并且要求索引字段和主文件字段一一对应。引入中间桶。
非候选码的三种对比:
以上是关于知识点回顾 | 数据库优化-索引的主要内容,如果未能解决你的问题,请参考以下文章