mysql - 深入浅出索引
- 索引是数据库系统里面最重要的概念之一。
- 索引的出现其实就是为了提高数据库查询的效率,就像书的目录一样。
索引常见的模型
- 目的:为了提高查询效率。
- 可以用于提高读写效率的数据结构很多。介绍三种常见的,也比较简单的数据结构,分别为哈希表、有序数组和搜索树。
- 哈希表:一种以键 - 值 (key - value) 存储数据的结构,我们只要输入待查找的值即key,就可以找到其对应的值即Value。哈希的思路相对比较简单,把值放在数组里,用一个哈希函数把key换算成一个确定的位置,然后把value放在数组的这个位置。
- 多个key值经过哈希函数的换算,会出现同一个值的情况,处理这种情况的一种方法是,拉出一个链表。
- 哈希索引做区间查询的速度是很慢的。
- 哈希表的这种结构适用于只有等值查询的场景。比如 Memcached 及其他一些NoSQL引擎。
- 有序数组:有序数组索引只适用于静态存储引擎。
- 二叉搜索树:
- 特点:每个节点的左儿子小于父节点,父节点又小于右儿子。这个时间复杂度是O(log(N)).
- 为了维持O(log(N))的查询复杂度,就需要保持这颗树的平衡二叉树。
- 哈希表:一种以键 - 值 (key - value) 存储数据的结构,我们只要输入待查找的值即key,就可以找到其对应的值即Value。哈希的思路相对比较简单,把值放在数组里,用一个哈希函数把key换算成一个确定的位置,然后把value放在数组的这个位置。