mysql的索引(基础)

含义:

是帮助sql加快查找数据的数据结构。类似于新华字典的目录,方便和加快我们找到想要的数据。

使用索引:

一般用可视化操作

-- 创建索引
create [ UNIQUE | FULLTEXT ] index 索引名 on 表名字 ( 列1,...列n ) ;

-- 查看索引
show index from 表名;

-- 删除索引
drop  index  索引名  on  表名;

底层数据结构

所用数据结构       如何选择
B+Tree最常用的索引类型
Hash底层数据结构是哈希表,用于等值查询,效率比B+Tree要高

hash

BTree

B+Tree

  • 非叶子节点仅仅是起到一个索引作用【查找】
  • 所有的数据都会出现在叶子节点
  • 叶子节点构成单向链表

索引的优缺点

优点:

  1.   任意字段都可以添加索引。
  2. 可以加快数据查找速度。

缺点:

  1. 创建和维护索引需要时间
  2. 对表中数据删除、修改、增加的同时也需要对索引进行维护
  3. 索引也需要空间存储

什么时候使用索引?

什么时候使用:

  1. 作为主键的列可以使用索引(自动创建,聚集索引)
  2. 经常进行连接的列可以使用索引,主要是外键。(自动创建,普通索引)可以加快连接速度。
  3. 在经常需要查找的列使用索引,加快查找速度
  4. 在经常需要排序的列(order by)使用索引,加快排序速度

什么时候不需要使用索引:

  1. 对非常数据少的表一般不建立索引
  2. 对于很少查询的列不建立
  3. 对于数据量很少或者数据量很多重复不需要建立索引

 索引的分类

功能划分

物理分类

聚集索引和二级索引

  1. 聚集索引将数据存储与索引放到了一块,索引结构的叶子节点保存了行数据
  2. mysql中每个表都有一个聚集索引(clustered index ),除此之外的表上的每个非聚集索引都是二级索引,又叫辅助索引(secondary indexes)。
  3. 以InnoDB来说,每个InnoDB表具有一个特殊的索引称为聚集索引。如果您的表上定义有主键,该主键索引是聚集索引。如果你不定义为您的表的主键时,MySQL取第一个唯一索引(unique)而且只含非空列(NOT NULL)作为聚集索引,InnoDB使用它作为聚集索引。如果没有这样的列,InnoDB就自己产生一个这样的ID值,它有六个字节,而且是隐藏的,使其作为聚簇索引。

  4. 案例

索引失效参考这篇文章(115条消息) mysql索引失效的常见9种原因详解_book多得的博客-优快云博客_mysql索引失效的几种情况

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值