zoukankan      html  css  js  c++  java
  • Btree索引与hash索引的区别

    在创建索引的时候需要选择索引类型是hash还是Btree,对于两种索引类型的区别一直存在疑惑,因此今天找了些资料解答一下自己。

    Hash索引与Btree索引的区别:

    • hash索引:将索引键经过hash运算之后得出hash值和对应的行指针存放于一个hash表中。
      • 检索效率非常高,可以一次定位。
      • 仅能满足“=”、“in”、“<=>”三种查询,不能使用范围查询,不支持like查询
      • 不支持索引排序,索引值和计算出来的hash值大小不一定一致。
      • 无法使用部分组合索引,因为hash值是组合索引键合并后计算的值
      • 无法避免表扫描,无法从hash索引表中直接完成查询,需要访问表中的实际数据进行相应比较才得出相应结果。
      • 遇到大量hash值一致的情况,性能不一定比Btree索引。大量记录指针与同一个hash值相关联,定位某条记录需要多次表数据访问而造成性能低下。
    • Btree索引
      • 检索时需要经历「根节点->枝节点->叶节点」,多次IO访问。
      • 支持联合索引的最优前缀。
      • 支持like查询
      • 支持范围查询
      • 支持索引排序

      总而言之,不存在大量重复数据的精确查找,hash索引的效率要高于Btree索引。

    参考:https://mp.weixin.qq.com/s/HsCMtgJnH11wKEZODjfNlg、https://blog.csdn.net/weixin_39683912/article/details/107459324

  • 相关阅读:
    Gradle gitignore Gradle 模式 上传SVN 要忽略的文件
    加速Android Studio/Gradle构建
    JAVA unicode转换成中文
    进程与线程
    Flask快速入门
    tensorflow入门指南
    BP神经网络与Python实现
    文档数据库MongoDB
    Python虚拟环境virtualenv
    Python爬虫框架Scrapy
  • 原文地址:https://www.cnblogs.com/smallzhen/p/14716312.html
Copyright © 2011-2022 走看看