数据库索引是什么?适用场景以及优缺点

目录

1、什么是索引

2、索引的使用场景

适合使用索引的场景

什么时候不适合创建索引

3、索引的优缺点


1、什么是索引

数据库索引是⼀种数据结构,⽤于提⾼数据库表的查询效率。

索引可以帮助数据库快速定位和检索存储在表中的数据,从⽽加快数据查询的速度。在数据量⽐较⼤时,使⽤索引可以极⼤地提⾼数据检索的效率。形象的说就是索引是数据的目录

索引的作⽤是通过构建⼀个额外的数据结构(B-tree、哈希表等)来加速数据的检索。它是在数据库表上创建的⼀种数据结构,它包含⼀些指向表中数据的指针,可以快速地定位到满⾜查询条件的数据⾏,从⽽提⾼查询效率。索引可以包含⼀个或多个列,可以使⽤单列索引、组合索引、全⽂索引等多种⽅式来创建。

2、索引的使用场景

适合使用索引的场景

  • 字段有唯一性限制的
  • 频繁查询的列,如主键、外键等。
  • 经常作为查询条件的列,如 WHERE、ORDER BY、GROUP BY 等语句中的列。
  • 经常需要连接的列,如多表联合查询时的列。
  • 数据量较大的表,通过索引可以加快数据检索速度。

什么时候不适合创建索引

  • WHERE 条件,GROUP BY,ORDER BY ⾥⽤不到的字段,索引的价值是快速定位,如果起不到定位的字段 通常是不需要创建索引的,因为索引是会占⽤物理空间的
  • 字段中存在⼤量重复数据,不需要创建索引,⽐如性别字段,只有男⼥,如果数据库表中,男⼥的记录分布均匀,那么⽆论搜索哪个值都可能得到⼀半的数据。在这些情况下,还不如不要索引,因为 MySQL 还有⼀个查询优化器,查询优化器发现某个值出现在表的数据⾏中的百分⽐很⾼的时候,它⼀般会忽略索引,进⾏全表扫描
  • 表数据太少的时候,不需要创建索引
  • 经常更新的字段不⽤创建索引,⽐如不要对电商项⽬的⽤户余额建⽴索引,因为索引字段频繁修改,由于要维 护 B+Tree的有序性,那么就需要频繁的重建索引,这个过程是会影响数据库性能的。

3、索引的优缺点

优点:

  • 提⾼数据库的查询速度
  • 缩短数据检索的时间
  • 提⾼系统的性能

缺点:

  • 需要占用物理空间,数量越大,占用空间越大
  • 创建索引和维护索引要耗费时间,这种时间随着数据量的增加而增大
  • 会降低表的增删改的效率,因为每次增删改索引,B+ 树为了维护索引有序性,都需要进行动态维护

因此,需要根据实际情况进⾏索引的创建和使⽤,避免过度索引导致系统性能下降。

4、什么情况下索引会失效

  • 当我们使用左或者左右模糊匹配的时候,也就是 like %xx 或者 like %xx% 这两种方式都会造成索引失效
  • 当我们在查询条件中对索引列做了计算、函数、类型转换操作,这些情况下都会造成索引失效
  • 联合索引要能正确使用需要遵循最左匹配原则,也就是按照最左优先的方式进行索引的匹配,否则就会导致索引失效
  • 在 WHERE 子句中,如果在 OR 前的条件列是索引列,而在 OR 后的条件列不是索引列,那么索引会失效
  • 字符串不加单引号,造成索引失效
  • 14
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值