• 关于数据库的索引


    1、索引的作用:加快查询。

    2、索引的类型唯一索引,主键索引和聚集索引

    3、索引的底层实现首先是平衡树,也就是B-Tree/B+Tree。然后别的还有哈希桶和位图,后面两种比较少用。

    4、来说一下啊自我对于平衡数区别的理解:

    -----B树里面的每个结点,不论是叶结点还是非叶结点,都含有Key和一个指向数据的指针。这样,一旦找到某个结点以后,就可以根据指针找到对应的磁盘地址。

      这也会使每一个数据的指针带来额外的内存占用,从而减少放入内存的结点数。

    ----B+树所有的叶子结点才有指向数据的指针。非叶结点就是纯的索引数据。这样我们就可以尽可能的将非叶结点载入内存,没有浪费。而且每个叶结点都有指向

      下一个叶结点的链接。这样我们还可以从任意一个叶结点开始遍历,获取接下来所有的数据。

    表面上看B树要比B+树跟好,但是B树实现成本低,合适的地方也很适用。ORACLE的默认索引就是B+树。

    5、各种索引的应用场景

    B+树最常用,性能很好,用于范围查询和单值查询都可以。特别是范围查询,非得用B+树这种顺序的才可以了。
    HASH的如果只是对单值查询的话速度会比B+树快一点,但是ORACLE好像不支持HASH索引,只支持HASH表空间。
    位图的使用情况很局限,只有很少的情况才能用,一定要确定真正适合使用这种索引才用(值的类型很少并且需要复合查询),否则建立一大堆位图就一点意义都没有了。
    
    
    

    最后是几个问题

    • 为什么要给表加上主键?

    • 如果不加主键的话,数据就无序的放置在磁盘存储器上,才是表结构。
    • 如果给表上了主键,那么表在磁盘上的存储结构就由整齐排列的结构转变成了树状结构,也就是上面说的「平衡树」结构,换句话说,就是整个表就变成了一个索引。
    • 这就是所谓的聚集索引。
    • 为什么加索引后会使查询变快?

    • 根据索引定位快速,查询就会变快。
    • 为什么加索引后会使写入、修改、删除变慢?

    • 平衡树这个结构必须一直维持在一个正确的状态, 增删改数据都会改变平衡树各节点中的索引数据内容,破坏树结构,他就需要重新梳理以保证它的正确。
    • 什么情况下要同时在两个字段上建索引?

    • 如果经常需要同时对两个字段进行AND查询,那么使用两个单独索引不如建立一个复合索引,因为两个单独索引通常数据库只能使用其中一个,
    • 而使用复合索引因为索引本身就对应到两个字段上的,效率会有很大提高。
  • 相关阅读:
    react中refs的使用
    在npm发布自己造的轮子
    如何阅读一本书——分析阅读模板
    如何阅读一本书——检视阅读模板
    Redis教程——检视阅读
    如何阅读一本书——分析阅读Pre
    SVN常用功能介绍(二)
    SVN常用功能介绍(一)
    分页sql大全
    .NetCore 登录(密码盐+随机数)
  • 原文地址:https://www.cnblogs.com/yhd1024/p/10794189.html
Copyright © 2020-2023  润新知