MySQL——索引
1 索引的常见模型 1.1 哈希表 哈希表是一种以键-值(key-value)存储数据的结构,只要输入待查找的键key, 就可以找到对应的值value。 哈希表适用于做等值查询(即查找的key值在表中有对应),但是哈希索引做区间查询的速度是很慢的 1.2 有序数组 查找数据的时间复杂度是O(log(N))。仅看查询效率,有序数组是一种非常好的数据结构,但是更新数据比较慢,因为要做数据的挪动工作。所以,有序数据只适用于静态存储引擎。 1.3 N叉搜索树 多叉树就是每个结点有多个儿子,儿子之间的大小保证从左到右递增。二叉搜索树效率是最高的,但是实际大多数的数据库存储并不使用二叉树,原因是,索引不止存在内存中,还要写到磁盘上。为了尽量少地读磁盘,一般使用N叉树。N取决于数据块的大小。 2 InnoDB的索引模型 2.1主键索引与非主键索引 在InnoDB中,表都是根据主键顺序以索引的形式存放的,这种存储方式称为索引组织表。InnoDB使用B+树索引模型,所以数据都是存储在B+树中的。 索引类型分为 主键索引 和 非主键索引 。 主键索引 的叶子结点是整行数据。在InnoDB中,主键索引也被称为聚簇索引(clustered index)。 非主键索引 的叶子结点是主键的值。在InnoDB中,非主键索引也被称为二级索引。 2.2 索引维护 自增主键是指自增列上定义的主键,在建表语句中一般是