博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
索引模块
阅读量:4966 次
发布时间:2019-06-12

本文共 1024 字,大约阅读时间需要 3 分钟。

常见问题:

  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中存储的,它的索引与数据一起存储在另一个.idb文件中的。

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

转载于:https://www.cnblogs.com/xk920/p/11084607.html

你可能感兴趣的文章
分享到QQ空间、新浪微博、腾讯微博的代码!
查看>>
通用媒体查询
查看>>
jmeter之JDBC
查看>>
实验四
查看>>
LeetCode-Shortest Word Distance II
查看>>
机器学习中的凸优化基础
查看>>
Redis和Jedis简介以及Redis事物
查看>>
第三、四、五次会议汇总
查看>>
js高级程序设计学习笔记
查看>>
windows phone 8 mp3 编码及解码
查看>>
亚马逊副总裁谈Marketplace平台的个性化服务
查看>>
Jmeter(非GUI模式)教程
查看>>
curl HTTP Header
查看>>
世界上最方便的SharePoint移动客户端--Rshare
查看>>
MongoDB要点
查看>>
字段与属性的总结与比较
查看>>
[转]Linear Depth Buffer(线性深度缓冲区)
查看>>
05最小生成树_Prim
查看>>
centos iptables
查看>>
Mysql数据库日志
查看>>