mysql索引类别和失效场景

爱被打了一巴掌 2023-10-04 20:08 86阅读 0赞

首先,我们为什么要使用索引,索引有什么作用呢?

索引可以用来快速查询数据表中有某一特定值的记录,大大加快数据的查询速度;在列上创建了索引之后,查找数据时可以直接根据该列上的索引找到对应记录行的位置,从而快捷地查找到数据。

https://blog.csdn.net/sumengnan/article/details/112796692 该文对索引底层B+tree做了详细讲解。

索引有几种类型呢?




















普通索引Normal 主要以B+树和哈希索引为主,任务是加快对数据的访问速度,常用于查询和排序的条件。
唯一索引Unique 和普通索引类型,区别是唯一索引值不能重复,但值能为空。
全文索引FullText 利用查询关键字和查询列内容之间的相关度进行检索。
主键索引 是一种特殊的唯一索引,一个表只能有一个主键,不允许有空值。

索引的优缺点是什么呢?

优点:创建索引可以大幅提高系统性能,帮助用户提高查询,排序和分组的速度。

缺点:索引的存储需要占用磁盘空间,当数据的量非常巨大时,索引的创建和维护所耗费的时间也是相当大的。

哪些情况不需要创建索引呢?

  1. 表记录太少或者是很少使用的列。

  2. 经常增删改操作的表。建索引提高了查询速度,但是降低了更新的速度,因为在更新数据的时候,同时也要更新索引文件。

  3. where条件里用不到的字段不用创建索引。

  4. 数据重复且分布平均的表字段,某个数据列包含许多重复的内容,建立索引没有太大实际效果。

索引失效有哪些场景呢?

946e8d504df240e7bca8e95cc745592e.png

此文就不进行验证了,可自行验证。

发表评论

表情:
评论列表 (有 0 条评论,86人围观)

还没有评论,来说两句吧...

相关阅读

    相关 Mysql索引失效场景

    首先我们准备一张有800万条数据的表,在没有加索引的条件下,查询全表的某一字段所耗费的时间大致在3.6S: ![在这里插入图片描述][23a74a59f6b3414e9ee

    相关 MySQL索引失效场景

    常见的导致索引失效的场景: 1、不使用索引列进行过滤:当查询中没有使用索引列作为过滤条件时,索引将无法发挥作用。例如,对于一个有索引的name列,如果查询中没有使用name作

    相关 mysql索引类别失效场景

    首先,我们为什么要使用索引,索引有什么作用呢? 索引可以用来快速查询数据表中有某一特定值的记录,大大加快数据的查询速度;在列上创建了索引之后,查找数据时可以直接根据该列上

    相关 mysql索引失效场景

    前言 之前有看过许多类似的文章内容,提到过一些sql语句的使用不当会导致MySQL的索引失效。还有一些MySQL“军规”或者规范写明了某些sql不能这么写,否则索引失效。