C++索引

本文详细介绍了数据库索引的基本概念,包括输入顺序文件、主码和辅码、索引类型(如稠密索引、稀疏索引、线性索引、静态索引、倒排索引、B树和位索引)。通过实例讲解了线性索引的问题和解决方案,如二级线性索引,并对比了静态索引如ISAM与倒排索引的优缺点。文章还讨论了动态索引,特别是位索引在低基数数据字段查询中的应用和限制。
摘要由CSDN通过智能技术生成

基本概念

输入顺序文件( entry-sequenced file )

按照记录进入系统的顺序存储记录

  • 输入顺序文件相当于一个磁盘中未排序的线性表
  • 因此不支持高效率的检索

主码

主码( primary key ) 是数据库中的每条记录的唯一标识

  • 例如,公司职员信息的记录的主码可以是职 员的身份证号码
  • 如果只有主码,不便于各种灵活检索

辅码

  • 辅码( secondary key ) 是数据库中可以出现重复值的码
  • 辅码索引把一个辅码值与具有这个辅码值的每一条记录的主码值关联起来
    • 大多数检索都是利用辅码索引来完成的

索引

索引( indexing ) 是把一个关键码与它对应的数据记录的位置相关联的过程

  • (关键码,指针)对,即( key, pointer )
  • 指针指向主要数据库文件(即“主文件”)中的完整记录

索引文件( index file ) 是用于记录这种联系的文件组织结

  • 索引技术是组织大型数据库的一种重要技术
  • 高效率的检索
  • 插入、更新、删除

稠密索引 vs 稀疏索引

  • 稠密索引:对 每个记录建立一个索引项
    • 主文件不按照关键码的顺序排列
  • 稀疏索引:对一组 记录建立一个索引项
    • 记录按照关键码的顺序存放
    • 可以把记录分成多个组(块)
    • 索引指针指向的这一组记录在磁盘中的起始位置

线性索引

线性索引文件

  • 按照关键码的顺序进行排序
  • 文件中的指针指向存储在磁盘上的文件记录起始位置或者主索引中主码的起始位置

线性索引的问题

  • 线性索引太大,存储在磁盘中
    • 在一次检索过程中可能多次访问磁盘,从而影响检索的效率
    • 使用二级线性索引
  • 更新线性索引
    • 在数据库中插入或者删除记录时

二级线性索引

  • 例如,磁盘块的大小是 1024 字节,每对 (关键码,指针)索引对需要 8 个字节1024 / 8 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值