索引到底是什么?

来源:百度知道 编辑:UC知道 时间:2024/05/16 11:21:42
学了好几年计算机了,今天就被问住了。到底什么是:索引?他是如何加快检索速度的?与关键字检索区别到底在哪?它是如何存储的?
谢谢

他加快主要是靠另外建了个树,专门用来定位。
关键字其实就是一种唯一索引。

参考一下
http://www.z6688.com/info/38907-1.htm

innodb 中文参考手册 --- 犬犬(心帆)翻译 11 表和索引结构
mysql 在数据库目录下的 .frm 文件中存储它的数据字典信息。但是每个 innodb 类型表也同样在 innodb 表空间内的内部的数据字典中存在它自己的进入点。当 mysql 移除(drop) 一个表或一个数据库时,它将同时删除 .frm 文件,以及在 innodb 的数据字典中相对应的进入点。这就是为什么不能通过简单的删除 .frm 文件为移除数据库中的 innodb 类型表的原因,以及为什么在 mysql 版本 <= 3.23.43 的版本中,drop database 不能用于 innodb 表的原因。

每一个 innodb 表都有一个被称为聚簇索引的特殊索引用于保存记录行信息。如果一个表定义一个 primary key ,那么主键的索引就是聚簇索引。

如果表没有定义一个 primary key ,mysql 将选出第一个 not null 字段的 unique 键做为主键,innodb 也将用这个键的索引做为聚簇索引。如果表中没有这样的键,innodb 将在内部产生一个聚簇索引,它是由按 innodb 分配给它们的 row id 顺序排序的记录行组成。这个 row id 是一个单调地增加并插入新行的 6-byte 字段。因而由 row id 排序的记录顺序也就是插入时的物理顺序。

通过聚簇索引访问一个记录行是非常快的,因为记录行数据与引导我们查找到它的索引在同一个页面上。 在大多数的数据库系统中记录行数据与索引记录通常并不是放在同一个页面上的。如果一个表太大了,那么聚簇索引体系通常比传统的方式更能减少磁盘 i/o 。

在非-聚簇索引(non-clustered inde