数据库系统 ##索引技术

数据库系统

索引技术

索引的概念

索引结构:索引字段+数据块指针
索引文件:一种辅助存储结构,不改变主文件的物理存储结构
索引文件的组织结构:排序、散列
多个索引文件:根据一个或多个属性组合值建立多个索引文件
检索效率高:索引文件小,可以全部载入到内存中,快速定位到物理存储位置
同步更新:对主文件的任何更新都要同步更新索引文件
缺点:增加了存储空间和维护代价
合适的索引:经常出现在where和groupby的字段 

SQL的索引创建和维护

create index idxSname on student(sname);
create index idxSnamcl on student(sname,sclass);
drop index idxSname;

稀疏索引和稠密索引

稠密索引:所有索引字段都有索引项
稀疏索引:主文件中仅部分记录存在索引项
稀疏索引定位:主文件排序,索引提供起始位置,之后顺序查找
稠密索引:
    候选键,只要索引中不存在,主文件中也必然不存在
    非候选键,主文件按索引字段排序/索引字段允许重复/中间层

主索引和辅助索引分类

主索引:索引指向存储块的稀疏索引,每个块的第一条记录成为索引记录(锚记录)
    要求主文件排序,每有一个存储块就有一条主索引,通常基于主码做索引字段
辅助索引:建立在非排序字段上的稠密索引
一个主索引和多个辅助索引:
    主索引指向块地址
    辅助索引可以指向记录位置
    主索引确定了主文件的存储方式,可以通过它来改变存储结构

其他类型索引分类

聚簇索引:索引中邻近的主文件也邻近
非聚簇索引:索引中邻近的主文件中不一定邻近
聚簇字段:主文件的某一排序字段不是主码,该字段不唯一
一个聚簇索引和多个非聚簇索引
    主索引通常是聚簇的,方便插入
    辅助通常是非聚簇的,方便查询
倒排索引:一个词汇 ,包含该词汇的多个文档的辅助索引
多级索引:对索引的索引,如B+树

B+树索引

B+树基础
节点:n个索引项 
非叶节点:指向索引块
叶节点:指向主文件的数据块或数据记录
叶节点的最后一个指针指向其下一个数据块
所有叶节点就是所有的索引
B:平衡的
建立不同的索引
主键稠密
稀疏:排序
非键属性稠密:唯一索引字段值,排序
非键属性稠密:重复的索引字段值
B树
索引字段值仅出现一次,或者叶节点或者非叶
指向主文件的指针存在于叶节点或者非叶节点
所有节点才覆盖全部索引
平衡的
B+树键值插入和节点分裂
分裂:结点索引位置不够
插入:新索引项
向上逐层分裂:保证所有节点符合要求
保证每个索引块(节点)的利用率在50%-100%
删除与合并
删除:
合并叶节点:指针数目小于50%时
向上逐层调整
B+树实现数据库操作
简单插入:从根开始二叉搜索最后插入
复杂插入:插入后分裂,向上调整
简单删除:
复杂删除:删除后,合并叶子节点,向上调整指针

散列索引

散列函数:合适的函数均匀的映射到不同桶
散列索引能够快速定位找到物理存储位置
冲突解决:溢出桶
维护散列索引:增加溢出桶,合并空桶
静态:桶的个数M确定
动态:M随记录多少改变
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值