MySQL索引

本文深入探讨了数据库索引的产生原因,从二叉树到红黑树,再到B树和B+树的演变过程。详细介绍了不同类型的索引,如普通索引、唯一索引、全文索引和联合索引,并阐述了聚集索引与非聚集索引的区别。同时,讨论了索引在数据库查询效率中的关键作用。
摘要由CSDN通过智能技术生成

MySQL索引

产生索引原因

数据库经常使用查询语句,但select是将数据全部遍历一遍,故产生了索引(快速高效的查询到数据)

经历

1.二叉树

一种特殊的树型,最多只能有两个子树。
在这里插入图片描述
缺点:若产生如下图右3子树过多,一样胡要查询许多次。
在这里插入图片描述
故产生了红黑树:
通过左旋或右旋产生下面图:
在这里插入图片描述
优点:分支平衡
缺点:左旋或右旋的成本很大

故产生了B树/B-树
在这里插入图片描述
优点:每一个节点可以存放多个数据和多个子节点。
缺点:每个子节点的占用空间大,i/o消耗多。

B+树:
在这里插入图片描述
优点:子节点只放指针,不放数据。

聚集索引和非聚集索引

  • 聚集索引:B+树叶子节点存放的是数据(自于INNODB引擎)
  • 非聚集索引:B+树叶子节点存放的是地址

每一个表只能有且仅有一个聚集索引,可以有多个非聚集索引。

索引的分类
1:普通索引
mysql> create table tb_index(
    -> tid int primary key,
    -> tname varchar(10),
    -> age int ,
    -> index ind(age));

在这里插入图片描述

2:唯一索引
mysql> create table un_ind(
    -> uid int primary key,
    -> uname varchar(10),
    -> age int ,
    -> unique un_i(age));

在这里插入图片描述

3:全文索引

全文索引只能在myisam 引擎下创建。所以创建表的时候定好引擎。

mysql> create table fu_ind(
    -> fid int primary key,
    -> fname varchar(10)
    -> )engine = myisam;

mysql> alter table fu_ind add fulltext index fu_i(fname);

在这里插入图片描述

4:联合索引
mysql> create table t_3(
    -> tid int primary key,
    ->  tname varchar(10),
    -> age int,
    -> index i_1(tname,age)
    -> );

在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值