zoukankan      html  css  js  c++  java
  • 索引模块

    常见问题:

      1.为什么要使用索引?

        数据查询最简单的方式就是全表扫描,即将整张表的数据,或者分批次加载到内存当中,存储的最小单位是或者,它们是由多行数据来组成的,将这些块都加载进来,并逐个轮寻,找到需要的目标,并返回。

      而这种方式在查找大量的数据时,是会非常慢的,但是在只有几十行的少量数据时,直接加载到内存中扫描,要比索引的方式要快,当然一般数据量都是非常大的,这种方法并不适用。

      所以,出现了适用与大量数据的方式:索引,(类似字典,根据关键信息 偏旁部首就可以快速查到目标信息)

      

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

        主键、唯一键以及普通键等。

      3.索引的数据结构:(有了索引还不足够,还需要以一定的逻辑结构组织起来,才能让我们检索的更高效。)

        生成索引,建立二叉查找树进行二分查找。(还有平衡二叉树、红黑树)时间复杂度O(logN) 线性树查找效率要低一些 为 N

        

        生成索引,建立B-Tree结构进行查找 (根节点至少包括两个孩子,树中每个节点最多含有m个孩子(m>=2),即m阶B-Tree,除根节点和叶节点外,其他每个节点至少有ceil(m/2)个孩子,所有叶子节点都位于同一层)

        

        生成索引,建立B+ -Tree结构进行查找(MySQL的索引就主要是通过这种方式实现的)  B+树更适合用来做存储索引:B+树的磁盘读写代价更低 、B+树的查询效率更加稳定、B+树更有利于对数据库的扫描 

        

        生成索引,建立Hash结构进行查找 

      

      4.密集索引和稀疏索引的区别

        密集索引文件中的每一个搜索码值都对应一个索引值

        稀疏索引文件只为索引码的某些值建立索引项

        

        MyISAM:不管是主键索引、唯一键索引、普通索引 均属于稀疏索引

        InnoDB:必须有且仅有一个密集索引(索引选取规则如下:)

           

        两种引擎索引示意图:

          

      innodb的表结构是一个.frm中存储的,它的索引与数据一起存储在另一个.ibd文件中的。

      myisam的表结构也是存储在一个.frm文件中的,但是它的索引与数据是分开存储在两个文件中的,前者存储在一个.MYI文件中,后者存储在一个.MYD文件中。

  • 相关阅读:
    Jmeter之CSV文件读取
    性能计数器及性能分析方法
    性能测试的应用领域
    动态加载JS文件方法总结
    handler method 参数绑定常用注解
    A4纸网页打印
    page-break-before和page-break-after 实现分页打印
    $.ajax 中的contentType
    @Controller和@RestController的区别?
    web页面内容打印总结
  • 原文地址:https://www.cnblogs.com/xk920/p/11084607.html
Copyright © 2011-2022 走看看