美文网首页
chapter13_数据库的存储结构_4_索引文件

chapter13_数据库的存储结构_4_索引文件

作者: 米都都 | 来源:发表于2019-01-06 16:56 被阅读0次
    • 索引:将一个或多个字段,按照某种有规律的方式组织起来,以便进行快速查找

    • 索引文件包括 索引键 + 对应的记录指针

        索引键     位置
          001    0x983f
          002    0x753d
          ...      ...
      
    • 索引的弊端:

      (1) 索引文件也要占据存储空间

      (2) 插入、删除、修改记录时,要同时更新索引文件

    • 当索引文件很大时,可以对索引文件再建立索引,形成多级索引

    • (1) 稀疏索引

      1° 每个数据块建立一个索引(即索引总数少于记录总数)

      2° 查找时,先找到索引对应的数据块,然后在数据块中顺序扫描

      3° 优点:索引文件空间小

      4° 缺点:

      查询速度较慢;

      数据记录必须按照索引键值顺序存储(这样才能有对应的块),导致插入、删除、修改操作复杂

      5° 由于稀疏索引的特点,稀疏索引只能建立在顺序文件上(否则无法指定对应的块)而且只能建一个索引(必须按照一种索引键值的顺序存储)

      (2) 稠密索引

      1° 每个记录都对应一个索引

      2° 记录可以任意存放,但是索引文件会较大

    • (1) 聚集索引

      文件中的所有元组按照索引键指定的顺序排序,使得具有相同索引键值的记录在物理上聚集在一起

      2° 根据聚集索引的特性,聚集索引键是顺序文件的排序键

      3° 当聚集索引键不是关系的主键时,可能会出现一个索引键对应多条记录的情况,此时聚集索引键指向的是物理上出现的第一条记录

      4° 根据3°,查找时首先根据聚集索引找到第一条记录,然后顺着向下扫描

      5° 对于MYSQL的InnoDB引擎,它会按照主键进行聚集,如果没有定义主键,InnoDB会试着使用唯一的非空索引来代替。如果没有这种索引,InnoDB就会定义隐藏的主键然后在上面进行聚集

      (2) 辅助索引

      1° 属于稠密索引并且可以有多个

      2° 索引表的第一个字段保存索引键值,第二个字段保存对应的记录。当索引键不是主键时,索引表中会出现第一个字段重复的情况

        索引键    磁盘块指针
         张三      0x9857
         张三      0x585f
         张三      0x3d9e
      

      3° 为了解决字段重复的问题,提高存储效率,可以中间添加一个记录指针桶:索引表的索引键一项不再有重复,它们保存记录指针桶对应的位置,记录指针桶是一个链表,指向对应的记录的位置

    • _B+树索引

      (1) 稀疏索引、稠密索引、聚集索引、辅助索引都输入 线性索引, B+树索引属于树形索引

    • 唯一索引 UNIQUE INDEX

      (1) 与普通索引类似,不同的是:索引列的值必须唯一,但允许有空值。如果是组合索引,则列值的组合必须唯一

      (2) 创建方式

      1° 创建索引:CREATE UNIQUE INDEX indexName ON tableName(tableColumns)

      2° 修改表结构:ALTER tableName ADD UNIQUE [indexName] ON (tableColumns(length))

      3° 创建表的时候直接指定:CREATE TABLE tableName ( [...], UNIQUE [indexName] (tableColumns(length));

    相关文章

      网友评论

          本文标题:chapter13_数据库的存储结构_4_索引文件

          本文链接:https://www.haomeiwen.com/subject/hmisrqtx.html