MySQL索引结构之B+Tree

本文深入探讨了数据库索引的类型和结构,从哈希索引的快速查找特性到B+Tree的高效范围查询优势。哈希索引适合等值比较,但不支持范围查询;而B+Tree通过多叉结构降低查询深度,优化范围查找,尤其适用于大数据量的场景。此外,文章还对比了不同类型的索引优缺点,为数据库性能优化提供了理论基础。
摘要由CSDN通过智能技术生成
  1. 创建索引语法
CREATE [UNIQUE | FULLTEXT | SPATIAL] INDEX index_name
			[index_type]
			ON tbl_name (key_part,...)
			[index_option]
			[algorithm_option | lock_option] ...

		key_part: {col_name [(length)] | (expr)} [ASC | DESC]

		index_option: {
			KEY_BLOCK_SIZE [=] value
		  | index_type
		  | WITH PARSER parser_name
		  | COMMENT 'string'
		  | {VISIBLE | INVISIBLE}
		  | ENGINE_ATTRIBUTE [=] 'string'
		  | SECONDARY_ENGINE_ATTRIBUTE [=] 'string'
		}

		index_type:
			USING {BTREE | HASH}

		algorithm_option:
			ALGORITHM [=] {DEFAULT | INPLACE | COPY}

		lock_option:
			LOCK [=] {DEFAULT | NONE | SHARED | EXCLUSIVE}
  1. 常见索引结构

    HASH、B+Tree
    
  2. 深入理解B+Tree

1)哈希索引
        哈希索引只支持等值比较,包括=、in()、<=>,查询速度非常快,不支持范围查找。

2)二叉查找树
        每个节点最多有两个子节点,左子节点小于根节点,右子节点大于根节点。
正常二叉树
极端情况下的二叉树
结论:二叉查找树可以做范围查询,但是在极端情况下,二叉查找树会退化为线性链表,二分查找会退化为遍历查找。

3)自平衡二叉树

  • a、红黑树
    红黑树
    结论:通过自平衡解决退化了线性链表的问题,但是表“右倾”,并没有真正解决树的平衡问题。

  • b、平衡二叉树(AVL)
            在二叉树基础上,左子树和右子树的高度差最大为1。
    在这里插入图片描述

结论:解决了红黑树的“右倾”问题,但是数据量大的情况下,树的高度会很高,需要更多的I/0。

4)B-Tree

        在平衡二叉树的基础上,通过多叉(一个节点可以有多个值),降低树的高度,提升查询效率,但是没有解决“回表问题”。
在这里插入图片描述

5)B+Tree

        在B-Tree的基础上,叶子节点增加有序链表,包含所有节点,非常适合范围查询,但是非叶子节点存在冗余。
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值