博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
关于数据库的索引
阅读量:6976 次
发布时间:2019-06-27

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

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查询,那么使用两个单独索引不如建立一个复合索引,因为两个单独索引通常数据库只能使用其中一个,
  • 而使用复合索引因为索引本身就对应到两个字段上的,效率会有很大提高。

转载于:https://www.cnblogs.com/yhd1024/p/10794189.html

你可能感兴趣的文章
网络安全技术分析:DDoS的攻与防
查看>>
LNMP安装配置
查看>>
什么是机器人底盘 答案在这里!
查看>>
SNMP 协议 OID的使用
查看>>
【CSS3教程】CSS3基础&常用技巧&实例集合
查看>>
面试题:2018最全Redis面试题整理
查看>>
引用头文件#include <queue>出错
查看>>
koa2 简单了解
查看>>
阿里P7架构师告诉你Java架构师必须知道的 6 大设计原则
查看>>
详解微信域名防封的方法以及检测等工具的技术原理
查看>>
smobiler介绍(二)
查看>>
Windows 8 快捷键大全
查看>>
安装hadoop下的sqoop1.99.3及配置问题全解决
查看>>
expect
查看>>
Could not create the view: An unexpected exception was thrown. Myeclipse空间报错
查看>>
RHEL6入门系列之九,常用命令2
查看>>
LINUX新手入门-1.装系统
查看>>
Attach Volume 操作(Part II) - 每天5分钟玩转 OpenStack(54)
查看>>
puppet 初识
查看>>
rsync
查看>>