什么是索引

本文深入探讨了数据库索引的概念,包括其在提高查询速度、保证数据唯一性等方面的优势,以及占用空间和降低增删改速率等缺点。详细介绍了BTree和Hash索引的底层原理,并列举了索引可能失效的情况。此外,还阐述了不同类型的索引,如主键索引、普通索引和全文索引等,以及如何有效地利用索引来优化查询性能。
摘要由CSDN通过智能技术生成

什么是索引

索引(index)是帮助mysql高效获取数据的数据结构,mysql索引主要有两种结构:BTree索引和Hash索引,平时的索引一般都是BTree索引。

优点:

  • 可以提高查询速度
  • 创建唯一索引,保证数据唯一性
  • 加速表与表的连接,特别是实现数据的参考完整性方面特别有意义
  • 在使用分组和排序字句进行数据检索时同样可以显著减少查询中分组和排序的时间。
  • 通过使用索引们可以在查询中的过程中,使用优化隐藏器,提高系统的性能

缺点:

  • 占用空间
  • 减缓增删改的速率
  • 创建和维护需要耗费时间

索引的底层原理及失效情况

数据库索引,是数据库管理系统中的一个排序的数据结构,以协助快速查询,更新数据库表中的数据。索引的实现通常使用B数及其变种B+树

索引什么情况下会失效?

对列进行计算或使用函数

不匹配数据类型,会造成索引失效

where中使用is null或者is not null,会造成失效

使用了反向操作,该索引失效

使用link操作,索引会失效

where中有or,有一个列没有索引,那其他的索引不起作用

索引类型

主键索引

索引列中的值必须是唯一的,不允许空值

普通索引

mysql中基本索引类型,没有什么限制,允许在定义索引的列中插入重复值和空值

唯一索引

索引列中的值必须是唯一的,但允许为空

全文索引

只能在文本类型CHAR,VARCHAR,TEXT类型字段上创建全文索引,字段长度比较大时,如果创建普通的索引,在like模糊查询时效率比较低,这时可以创建全文索引。myISAM和InnoDB都可使用全文索引

空间索引

mysql在5.7之后支持空间索引,而且支持OpenGIS几何数据模型MySQL在空间索引这方面遵循OpenGIS稽核数据模型规则

前缀索引

在文本类型入CHAR,VARCHAR,TEXT类列上创建索引时,可以指定索引的长度。但是数值类型不能指定

其他(按照索引列数量的分类)

单列索引,组合索引

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

sayhitoloverOvO

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

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

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

打赏作者

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

抵扣说明:

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

余额充值