mysql索引
Published in:2022-10-30 | category: 学习

mysql索引

索引类型:

按逻辑:

普通索引:普通索引是mysql中最基本的索引,允许在列中插入重复值和空值,唯一的任务就是加快数据访问速度。

唯一索引:避免数据重复,唯一索引列的值必须唯一,允许有空值,如果是组合索引,则列值的组合必须唯一。

主键索引:主键索引是专门为主键字段创建的索引,一个表只能有一个主键,不允许有空值。

组合索引:在多个字段上创建的索引,只有在查询的时候使用了创建索引时的第一个字段,才会使用索引,遵循最左前缀原则。

全文索引:全文索引主要用来查询文本中的关键字,而不是直接与索引中的值相比较。fulltext索引跟其它索引大不相同,它更像是一个搜索引擎,而不是简单的where语句的参数匹配。fulltext索引配合match against操作使用,而不是一般的where语句加like。只能在 CHAR、VARCHAR 或 TEXT 类型的列上创建。在mysql引擎中只有MyISAM引擎支持全文索引。

索引优缺点:

优点:

通过创建唯一索引,可以保持数据库中数据的唯一性。

使用索引可以大幅度提升系统性能,提高查询速度。

可以降低查询中分组和排序的时间。

可以加速表和表之间的连接,特别是在实现数据的参考完整性方面特别有意义。

缺点:

索引需要占用额外的物理空间。

当数据量非常大时,维护和创建索引也所耗费的时间也是非常大的。

当对表中的数据进行增加、删除和修改的时候,索引也要动态的维护,这样就降
低了数据的维护速度。

什么样的字段适合创建索引?

在经常需要搜索的列上,可以加快搜索的速度。

在作为主键的列上,强制该列的唯一性和组织表中数据的排列结构。

在经常用在连接的列上,这些列主要是一些外键,可以加快连接的速度。

在经常需要排序的列上创建索引,因为索引已经排序,这样查询可以利用索引的排序,加快排序查询时间。

什么样的字段不适合创建索引?

在查询中很少使用的列不应该创建索引。因为,既然这些列很少使用到,因此有索引或者无索引,并不能提高查询速度。相反,由于增加了索引,反而降低了系统的维护速度和增大了空间需求。

数据值很少的表格也不应该创建索引。因为,当数据太少的时候,全盘搜索可能都比索引查找还快,就没有必要创建索引了,反而还会降低磁盘空间和性能。

定义为text、image和bit数据类型的列不应该创建索引。因为,这种列要么是数据相当大要么是数据相当少。

当修改性能远大于检索性能时不应该创建索引。因为,修改性能和检索性能是相矛盾的,两者只会一增一减。

Prev:
客服功能
Next:
vector