目录
一、基础理论
search key
index file
二、ordered indices
定义:
主要类型:
三、Hash indices
定义:
溢出处理:
溢出桶:
溢出处理:
周期性重新哈希:
四、创建索引的语句
一、基础理论
索引是数据库中一个特殊的机制,用来提升速度——可以很快地访问到你想要的数据。
search key
用于快速定位和检索存储在数据库中的数据的一种机制。搜索键可以是主键、外键、候选键、唯一键或索引键等。
index file
由search key和pointer组成。是对数据库某一个属性的处理。
分类:
1.ordered indices:搜索键是按顺序储存的。
2.hash indices:哈希索引,根据索引属性通过哈希函数映射到一个个桶中。
评价标准:
能否快速有效的找到数据
二、ordered indices
定义:
顺序索引是指索引文件中的索引记录都是按照搜索键排好序的索引类型。
主要类型:
聚簇索引(cluster index):也叫主索引。形成一簇一簇的数据。
密度索引(Dense index):密集索引是指索引文件中每个搜索码值都对应一个索引项,即索引覆盖了数据表中的每一行。
稀疏索引(Sparse index):与密集索引相对。它只查找一部分索引。给索引分段然后进行查找。稀疏索引是指只为索引码的某些值建立索引项,不覆盖数据表中的所有行。
次级索引(Secondary index):主索引外的二级索引。
三、Hash indices
定义:
哈希索引基于哈希表实现,哈希表是一种通过哈希函数将键值映射到特定位置的数据结构。对于数据库中的每一行数据,存储引擎都会对所有的索引列计算一个哈希码(Hash Code),哈希码是一个较小的值,并且不同键值的行计算出来的哈希码也不一样。哈希索引将所有的哈希码存储在索引中,同时在哈希表中保存指向每个数据行的指针。
溢出处理:
溢出桶:
为了解决哈希表的溢出问题,通常会使用溢出桶。当某个桶已满时,新的元素会被插入到与该桶关联的溢出桶中。如果溢出桶也满了,则可能需要再创建一个新的溢出桶,如此循环。所有溢出桶通常会用链表链接在一起,形成一个溢出链。、
溢出处理:
在查找元素时,如果目标桶已满,则需要检查该桶的所有溢出桶中的记录,直到找到匹配的元素或遍历完所有溢出桶。
周期性重新哈希:
当负载变化或数据分布变化时,我们会周期性重新哈希是指在哈希表的使用过程中,定期地对哈希表进行重新构建(即重新计算哈希函数和重新分配存储位置),以应对哈希表的负载变化和数据分布变化,从而保持哈希表的性能,如查找、插入和删除操作的效率。
四、创建索引的语句
创建unique index
create index <index-name> on <relation-name>(<attribute-list>)
删除索引
drop index