索引

  1. MySQL的各个引擎:
    MyISAM、InnoDB。前者不支持事务处理、外键,支持全文本搜索(FULL-text索引),默认索引为后者。
  1. 索引类型:
    索引可以从多个角度分类。
    (1)数据结构角度:
    B+tree索引
    Hash索引
    Full-Text索引
    R-tree索引

(2)物理角度:
聚集索引
非聚集索引
(都是B+tree索引)

(3)逻辑角度
主键索引
唯一与非唯一索引
单列与多列索引
空间索引

数据库的主要引擎MyISAM和InnoDB都是采用B+tree索引的。

【1】为什么不用B-tree索引而采用B+tree索引呢?
因为B树是每个结点都存储数据(是一种特殊的二叉查找树,具体可见B树定义),而B+树是只有叶子结点存储数据集,B+树高度较低,因此在索引容量较大的时候,B+树的查找次数较少,相应的IO操作也少。

【2】那为什么不用二叉查找树作为索引呢?
因为二叉树的结点只能存放一个数据,索引是存储在磁盘上的,如果要找的几个数据存放给在相邻地址,那么就可以大大节省寻址时间,B+tree就是叶子结点存放多个数据、B-tree每个结点存放多个数据,而B+tree高度更低,所以采用B+tree而不是B-tree/二叉查找树作为索引。

【3】为什么不用hash索引?
因为hash基于键值对,各个数据之间没有顺序关系,无法进行去区间查询(除非你全部算一遍看看是不是在这个区间)。

全部评论

相关推荐

CADILLAC_:我要用bava 不要用java 了 啊啊啊啊啊啊啊啊啊啊啊
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客企业服务