这两天有个非常强烈的感觉就是自己在一些特别的情况下还是hold不住,脑子easy放空或者说一下子不知道怎么去分析问题了,比方,问“hash和btree索引的差别”,这非常难吗。仅仅要掌握了这两种数据结构稍加分析就能得出答案,结果是一下子不知道从何说起。进入正题吧。这两者有啥差别。
1. hash索引查找数据基本上能一次定位数据。当然有大量碰撞的话性能也会下降。
而btree索引就得在节点上挨着查找了,非常明显在数据精确查找方面hash索引的效率是要高于btree的。
2. 那么不精确查找呢,也非常明显,由于hash算法是基于等值计算的。所以对于“like”等范围查找hash索引无效,不支持;
3. 对于btree支持的联合索引的最优前缀。hash也是无法支持的。联合索引中的字段要么全用要么全不用。提起最优前缀竟然都泛起迷糊了,看来有时候放空得太厉害。
4. hash不支持索引排序。索引值和计算出来的hash值大小并不一定一致。
勤动脑,少放空。
索引是在数据库表或者视图上创建的对象,目的是为了加快对表或视图的查询的速度。
依照存储方式分为:聚集与非聚集索引
依照维护与管理索引角度分为:唯一索引、复合索引和系统自己主动创建的索引。
索引的结构是由:根节点--->非叶节点--->非叶节点--->叶节点
1、聚集索引:表中存储的数据依照索引的顺序存储,检索效率比普通索引高,但对数据新增/改动/删除的影响比較大。
逻辑顺序决定了表中对应行的物理顺序。
特点:
(1) 一个表能够最多能够创建249个索引
(2) 先建聚集索引才干创建非聚集索引
(3) 非聚集索引数据与索引不