01_Mysql索引

(1) 索引的优缺点,什么时候使用索引,什么时候不能使用索引(重点)
  • 经常搜索的列上建索引
  • 作为主键的列上要建索引
  • 经常需要连接(where子句)的列上
  • 经常需要排序的列
  • 经常需要范围查找的列

哪些列不适合建索引?

  • 很少查询的列
  • 更新很频繁的列
  • 数据值的取值比较少的列(比如性别)
(2) 索引的底层实现(重点)

数据库的索引是使用B+树来实现的。

(为什么要用B+树,为什么不用红黑树和B树)

B+树是一种特殊的平衡多路树,是B树的优化改进版本,它把所有的数据都存放在叶节点上,中间节点保存的是索引。这样一来相对于B树来说,减少了数据对中间节点的空间占用,使得中间节点可以存放更多的指针,使得树变得更矮,深度更小,从而减少查询的磁盘IO次数,提高查询效率。另一个是由于叶节点之间有指针连接,所以可以进行范围查询,方便区间访问。

而红黑树是二叉的,它的深度相对B+树来说更大,更大的深度意味着查找次数更多,更频繁的磁盘IO,所以红黑树更适合在内存中进行查找。

(3) MySQL怎么建立索引,怎么建立主键索引,怎么删除索引?

MySQL建立索引有两种方式:用alter table或者create index。

alter table table_name add primary key(column_list) #添加一个主键索引
alter table table_name add index (column_list)      #添加一个普通索引
alter table table_name add unique (column_list)     #添加一个唯一索引
create index index_name on table_name (column_list)   #创建一个普通索引
create unique index_name on table_name (column_list)  #创建一个唯一索引

Mysql删除索引同样也有两种方式:alter table 和 drop index

alter table table_name drop index index_name    #删除一个普通索引
alter table table_name drop primary key         #删除一个主键索引
drop index index_name on table table_name
(4) 索引类型
  • 逻辑分类
    • 主键索引:当关系表中定义主键时,会自动创建主键索引。每张表中的主键索引只能有一个,要求主键中的每个值都唯一,即不可重复,也不能为空
    • 唯一索引:数据列不能有重复,但可以有空值,一张表可以有多个唯一索引,但是每个唯一索引只能有一列
    • 普通索引:一张表可以有多个普通索引,可以重复,可以为空值。
    • 全文索引:可以加快模糊查询
  • 物理分类

参考链接:https://www.cnblogs.com/wezheng/p/8399305.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

fantongl

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值