MySQL实战学习(三)
MySQL实战学习(三) 索引 索引的常见模型 哈希表 有序数组 搜索树 哈希表 哈希表是一种以键 - 值(key-value)存储数据的结构,我们只要输入待查找的值即 key,就可以找到其对应的值即 Value。 优点:做数据新增时,索引的建立会比较快。适用于等值查询的场景。 缺点:在进行数据区间查找时,会比较慢。 有序数组 由数组的特点可以知道,有序数组在等值查询和范围查询的场景的性能非常优秀。在有序数组中利用二分搜索可以快速的找到对应的值。但是当数据大量变动时,采用有序数组会导致性能降低。因此,有序数组索引只适用于静态存储引擎。 优点:有序数组在等值查询和范围查询场景中的性能就都非常优秀。 缺点:在需要更新数据的时候就麻烦了,你往中间插入一个记录就必须得挪动后面所有的记录,成本太高。 搜索树 二叉搜索树的特点是:每个节点的左儿子小于父节点,父节点又小于右儿子。这样如果你要查 ID_card_n2 的话,按照图中的搜索顺序就是按照 UserA -> UserC -> UserF -> User2 这个路径得到。这个时间复杂度是 O(log(N))。 优点:查询时间复杂度O(log(N)),更新时间复杂度O(log(N)) 缺点:数据库存储大多不适用二叉树,因为树高过高,会导致多次的硬盘数据读取,会适用N叉树 InnoDB的索引模型 InnoDB 使用了 B+ 树索引模型