第三章数据库索引技术
2016-05-30 17:30
357 查看
1.什么是主索引、辅助索引、稠密索引、稀疏索引、有序索引、散列索引?
主索引:如果索引记录的顺序与数据文件记录的存储顺序相同,则此类索引称主索引;
辅助索引:如果索引记录的顺序与文件记录的存储顺序不同,则称为辅助索引;
稠密索引:索引记录包括索引键值及指向具有该键值的第一个数据记录的指针。具有相同键值的其余记录顺序地存储在第一个记录之后;
稀疏索引:建立索引时只为某些索引键值建立索引记录,且每个索引记录也包括一个索引键值和指向该索引键值的第一个数据记录的指针;
有序索引:索引记录基于索引键值进行排序;
散列索引:使用散列算法将键值平均分布到若干个散列桶中,并通过指针指向其物理存储顺序。
2.掌握顺序文件索引的维护(插入、删除)的过程。
稠密索引:
删除过程:将记录标记为删除,其余记录不移动。(并不是真正的删除,有利于以后进行块的再分配及新纪录的插入)但在索引文件中,记录的索引项必须删除,并将本块中该索引项后面的索引项前移。
插入过程:如果磁盘中有空闲空间,就直接插入该块中;如果磁盘没有空闲空间,开辟额外的磁盘空间。之后更新索引表,将比插入键值大的后移一位,然后插入该键值,如果该键值已存在则不更新。
稀疏索引:
删除过程:索引中能找到的,直接找到并标记删除,其他索引项前移。索引中找不到的,根据索引表找到小于(删除键值)的最大值,然后沿其指向的记录向后寻找,找到后标记删除。
插入过程:如果磁盘中有空闲空间,就直接插入到空闲空间里;如果没有空闲空间,需要通过索引记录寻找小于(插入键值)的最大值及其指向的记录,并将目标记录插入其后,根据让文件结构紧凑来选择将哪条记录移入溢出块。之后根据该记录是否是块中最小记录而修改索引记录。
3.掌握B+树索引的结构及其生成与维护的过程。
结构:
树形多级索引结构,树的各分支的叶节点到根节点的距离全部相等。B+树结构包含根节点、叶节点、和中间节点三种类型的节点。其结构如64页 图3.16所示
生成过程:按照结构特点,维护方法去建立,习题3.5
维护过程:
插入:首先在B+树中找到适当的叶节点,如果叶节点有空闲空间,把新键直接插入,如果没有,必须进行(递归)分裂。
分裂方法P68 (1)(2)
删除:
主索引:如果索引记录的顺序与数据文件记录的存储顺序相同,则此类索引称主索引;
辅助索引:如果索引记录的顺序与文件记录的存储顺序不同,则称为辅助索引;
稠密索引:索引记录包括索引键值及指向具有该键值的第一个数据记录的指针。具有相同键值的其余记录顺序地存储在第一个记录之后;
稀疏索引:建立索引时只为某些索引键值建立索引记录,且每个索引记录也包括一个索引键值和指向该索引键值的第一个数据记录的指针;
有序索引:索引记录基于索引键值进行排序;
散列索引:使用散列算法将键值平均分布到若干个散列桶中,并通过指针指向其物理存储顺序。
2.掌握顺序文件索引的维护(插入、删除)的过程。
稠密索引:
删除过程:将记录标记为删除,其余记录不移动。(并不是真正的删除,有利于以后进行块的再分配及新纪录的插入)但在索引文件中,记录的索引项必须删除,并将本块中该索引项后面的索引项前移。
插入过程:如果磁盘中有空闲空间,就直接插入该块中;如果磁盘没有空闲空间,开辟额外的磁盘空间。之后更新索引表,将比插入键值大的后移一位,然后插入该键值,如果该键值已存在则不更新。
稀疏索引:
删除过程:索引中能找到的,直接找到并标记删除,其他索引项前移。索引中找不到的,根据索引表找到小于(删除键值)的最大值,然后沿其指向的记录向后寻找,找到后标记删除。
插入过程:如果磁盘中有空闲空间,就直接插入到空闲空间里;如果没有空闲空间,需要通过索引记录寻找小于(插入键值)的最大值及其指向的记录,并将目标记录插入其后,根据让文件结构紧凑来选择将哪条记录移入溢出块。之后根据该记录是否是块中最小记录而修改索引记录。
3.掌握B+树索引的结构及其生成与维护的过程。
结构:
树形多级索引结构,树的各分支的叶节点到根节点的距离全部相等。B+树结构包含根节点、叶节点、和中间节点三种类型的节点。其结构如64页 图3.16所示
生成过程:按照结构特点,维护方法去建立,习题3.5
维护过程:
插入:首先在B+树中找到适当的叶节点,如果叶节点有空闲空间,把新键直接插入,如果没有,必须进行(递归)分裂。
分裂方法P68 (1)(2)
删除:
相关文章推荐
- Oracle sqlplus设置显示格式命令详解
- SQL更改表字段为自增标识
- mysql处理特殊字符
- sql重要的DML和DDL语句
- Oracle去掉重复数据
- (转)mongoDB 禁用大内存页面 transparent_hugepage=never
- 【Leetcode-Mysql】Trips and Users
- pdo连接mssql2008
- mysql(mariadb)重装
- 使用Spring Session和Redis管理session
- centos安装mariadb出现错误的解决方法
- 详解如何挑战4秒内百万级数据导入SQL Server(转)
- ORM, ormlite和sqlite
- powerdesigner导出sql
- mysql 导入数据 Got a packet bigger than ‘max_allowed_packet’ bytes的解决方法
- MongoDB Capped Collections
- Redis Windows版安装及整合Spring
- nginx+tomcat+redis集群环境搭建
- 基础知识系列☞MSSQL→约束
- postgresql 安装