zoukankan      html  css  js  c++  java
  • 数据库优化索引

    为什么要使用索引?

    索引可以避免全表扫描去查找索引,提升检索效率。

    什么样的信息能成为索引?

    主键,唯一键等能区分数据唯一性的字段都能成为索引。

    索引的数据结构?

    主流是B+树,还有Hash,Bitmap。其中MySQL数据库不支持Bitmap索引。

    密集索引和哈希索引的区别?

    密集索引稀疏索引 

    索引的优化

    1、二叉查找树

     时间复杂度O(logn)

    2、B-Tree

    定义:

    根节点至少包括两个孩子

    树种每个节点最多含有m个孩子(m>=2)

    除根节点和叶子节点,其它每个节点至少有ceil(m/2) 个孩子

    所有叶子节点都位于同一层 

    3、B+-Tree

    B+树是B树的变体,其定义基本与B树相同,除了

    非叶子节点的子树指针与关键字个数相同。

    非叶子节点的子树指针P[i], 指向关键字(K[i],k[i+1])的字树

    非叶子节点仅用来索引,数据都保存在叶子节点中

    所有叶子节点均有一个链指针指向下一个叶子节点

    结论:

    B+树更适合用来做索引

    B+树对磁盘读写代价更低

    B+数的查找效率更加稳定

    B+数更有利于对数据库的扫描

     4、Hash索引

     缺点:

    仅能满足“=”,“IN”,不能使用范围查询

    无法被用来避免数据的排序操作

    不用利用部分索引键查询

    不能避免表扫描

    遇到大量Hash值相等的情况后性能不一定就会比B-Tree索引高。

    5、BitMap索引(位图索引)(使用较少)

  • 相关阅读:
    第一天站立会议
    Sprint会议计划
    软件需求分析
    团队介绍
    再写行转列和列转行
    二十三种设计模式之:组合(Composite)模式(部分·整体模式)
    对于类和对象的认识
    对排序的认识
    设计模式分类
    二十三种设计模式之:适配器模式
  • 原文地址:https://www.cnblogs.com/linlf03/p/12184819.html
Copyright © 2011-2022 走看看