数据库索引入门介绍

本文详细探讨了索引在数据库中的作用,包括其优点如提高查询速度和以空间换速度,以及不同类型的索引(主键索引、唯一索引、普通索引、复合索引和全文索引)。还介绍了索引查询中的覆盖和回表现象,以及最左匹配规则,并区分了key、primarykey、uniquekey和index的概念。
摘要由CSDN通过智能技术生成

1、索引的优缺点

索引的优点:提高查询速度,以空间换速度

索引的缺点:消耗空间

2、索引的分类

大牛笔记

1.主键索引

​ 顾名思义主键为索引,创建表时主键默认为主键索引,一张表只能有一个主键索引,不允许重复、不允许为 NULL。一般在建表的时候同时创建主键索引。

2.唯一索引

​ 索引列的值必须唯一,但允许有空值,一张表可以有多个唯一索引。如果时组合索引,则列值的组合必须是唯一的。mysql中的key有两层含义:1.约束(约束和规范数据库的结构完整性)2.索引

3.普通索引

​ 允许数据重复,允许 NULL 值插入。普通索引的唯一任务是加快对数据的访问速度。

4.复合索引

​ 用户可以在多个列上建立索引,这种索引叫做复合索引(组合索引), 查询时含有创建时第一个开始索引才有效。

5.全文索引

​ 它查找的是文本中的关键词,主要用于全文检索。(mysql并不擅长全文索引,全文索引是ES的特长)

聚簇索引

​ 主键索引是唯一的聚簇索引。聚簇索引(clustered index)不是单独的一种索引类型,而是一种数据存储方式。聚簇索引也可理解为将数据存储与索引放到了一块,找到索引也就找到了数据(索引指向的是直接数据,即:聚簇索引—>数据)。

非聚簇索引

​ 数据和索引是分开的,除主键索引以外都是非聚簇索引。非聚簇索引索引存储没有和数据放在一起,而是指向的主键,再通过主键去找到数据(非聚簇索引—>主键—>数据)。

3、索引查询时的两种情况:索引覆盖、回表

索引覆盖

​ ​ 当利用非聚簇索引查的值正好是主键时,因为非聚簇索引正好指向的是主键,所以不用去数据表中拿值可以直接返回主键值。此过程被称为:索引覆盖。

回表

​ 当查询的列值不在索引中时,查询的结果要从表中拿值,此过程称为:回表。

4、最左匹配

​ 不是sql语句的左右而是创建组合索引时的左右。

​ 例如:组合索引为(a,b,c)。

  1. 组合索引字段无论顺序如何改变都会用到索引,前提是所有字段都在where条件上
  2. 如果想要使用一个或者两个字段在where条件上,必须有组合索引里的第一个字段,但是与顺序无关,例如a,c或c,a,这种场景是可以命中索引的。但是,b,c或c,b这种是不会命中索引的。

补充:Mysql中key 、primary key 、unique key 与index区别

key 与 index 含义:

  1. key具有两层含义:1.约束(约束和规范数据库的结构完整性)2.索引
  2. index:索引

key 种类:

  1. key:等价普通索引 key 键名 (列)

  2. primary key:

    • 约束作用(constraint),主键约束(unique,not null,一表一主键,唯一标识记录),规范存储主键和强调唯一性

    • 为这个key建立主键索引

  3. unique key:

    • 约束作用(constraint),unique约束(保证列或列集合提供了唯一性)

    • 为这个key建立一个唯一索引;

  4. foreign key:

    • 约束作用(constraint),外键约束,规范数据的引用完整性

    • 为这个key建立一个普通索引;

  • 9
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值