索引
数据库中的索引就像书后附录提供的索引一样,有助于快速定位记录并读取需要的信息。本文简要梳理了索引相关的内容。
基本概念
在很多书籍的附录中会包含一份索引,记录了关键字/词组/主题在书中出现的页码。如果需要查阅特定主题的内容,只需要打开索引检索主题,并翻到对应页码即可。
那么对于数据库来说,如果计划访问具有某些特征的记录,则可以通过索引找出其所对应的数据块,通过读取数据块得到对应的记录。
索引的优缺点
在上面的过程中,可以清楚看到索引的一个显著 优点 是:加快数据查询的速度。
但是,设想你正在撰写一本技术书,并不得不为数百上千个关键字建立索引。显而易见,索引也有一些 缺点 :创建和维护索引会耗费一定的时间,且索引还需要占据额外的空间。
索引的基本类型
书籍中的索引常常会按关键字的字典序进行排列,对应到数据库中,这类基于值的顺序编排的索引被称作 顺序索引 。
随着索引量的增大,即便是按顺序查找仍然会需要耗费大量时间,通过引入一些相对更复杂的索引技术,可以解决此问题。常见的是 散列索引 ,基于散列函数将值分布到若干散列桶。
常见的评估指标
数据库系统中往往会存在不止一种索引技术,不同数据库系统之间的索引技术可能也不同。评估并对比不同的索引可以考虑以下几个指标:
- 访问类型:能支持哪些访问类型。
- 访问时间:找到特定数据项 / 数据项集所需的时间。
- 插入时间:插入一个新数据项所需的时间。
- 删除时间:删除一个数据项所需的时间。
- 空间开销:索引结构占用的额外空间。