MySQL索引的作用和分类介绍

索引介绍

什么是索引?为什么要建立索引?

      索引用于快速在某一列中找到特定的值,不适用索引的话,mysql必须从读取这张表的所有记录,直到找到相关的值,表越大查找数据所花费的时间就越多。如果所要查找的列中有索引的话,MySQL就能快速到达一个位置去搜素数据文件,而不必查看所有数据,因此使用索引将节省很多时间。
       例如:有一张person表,其中有2W条记录,记录着2W个人的信息。有一个Phone的字段记录每个人的电话号码,现在想要查询出电话号码为xxxx的人的信息。如果没有索引,那么将从表中第一条记录一条条往下遍历,直到找到该条信息为止。如果有了索引,那么会将该Phone字段,通过一定的方法进行存储,好让查询该字段上的信息时,能够快速找到对应的数据,而不必在遍历2W条数据了。
       Mysql中的索引的存储类型有两种,BTREE、HASH。也就是用树或者hash值来存储该字段,要知道其中详细是如何查找的,就需要会算法的知识了。我们现在只需要知道索引的作用,功能是什么就行。

MySQL中索引的优缺点和使用原则

  • 优点:
           1. 所有的MySQL列类型(即字段类型)都可以被索引,也就是可以给任意字段设置索引。
           2. 大大加快了数据的查询速度。
  • 缺点:
           1. 创建索引和维护索引要耗费时间,并且随着数据量的增加所耗费的时间也会增加。
           2. 索引也需要占空间,我们知道数据表中的数据也会有再大上限的设置。一张表有多个索引,这些索引会被存放到一个专门存储索引的文件中,如果大量使用索引,索引文件可能会比数据文件更快达到上限值。
  • 使用原则:
           1. 并不是每个字段设置索引就好,也不是索引越多越好,需要自己合理的设置索引。
           2. 对经常更新的标就避免对其使用过多的索引,对经常查询的字段应该创建索引。
           3. 如果一个字段的值很少就不要创建索引,如:性别只有男女就不要再创建索引。相反,如果一个字段可取的值特别多就要创建字段,如:id,每个id都是不同的,这就需要创建索引。

索引引擎

索引是在存储引擎中实现的,也就是说不同的存储引擎会使用不同的索引。

  • MyISAM和InnoDB存储引擎:值支持BTREE索引,即默认使用BTREE,不能更换。
  • MEMORY/HEAP存储引擎:支持HASH和BTREE索引。

索引分类

索引可以分为四类:单列索引(普通索引,唯一索引,逐主键索引)、组合索引、全文索引、空间索引。

  • 单列索引:一个索引只包含单个列,但是一个表可以有多个单列索引。
           1. 普通索引:MySQL中基本索引类型,没有什么限制,允许在定义索引的列中插入重复的值和空值,纯粹为了查询数据更快。
           2. 唯一索引:索引列中的值必须是惟一的,但是允许为空值。
           3. 主键索引:是一种特殊的唯一索引,不允许有空值。
  • 组合索引:
           1. 用表中的多个字段组合创建索引,只有在查询条件中使用了这些字段中左边的字段时,索引才会被使用,使用组合索引时遵循: 最左前缀集合。
  • 全文索引:
           1. 全文索引,只有在MyISAM引擎中才能使用,只能在char,varchar,text类型的字段上使用。介绍了要求,说说什么是全文索引,就是在一堆文字中,通过其中的某个关键字等,就能找到该字段所属的记录行,比如有"你是个大煞笔,二货 …" 通过大煞笔,可能就可以找到该条记录。这里说的是可能,因为全文索引的使用涉及了很多细节,我们只需要知道这个大概意思。
  • 空间索引:
           1. 空间索引是对空间数据类型的字段建立的索引,MySQL中的空间数据类型有四种,GEOMETRY、POINT、LINESTRING、POLYGON。
           2. 在创建空间索引时,使用SPATIAL关键字。
           3. 要求引擎为MyISAM,创建空间索引的列,必须将其声明为NOT NULL。

文章转自:https://www.cnblogs.com/whgk/p/6179612.html

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
MySQL索引是一种数据结构,它能够帮助MySQL高效地查询数据。MySQL索引通过在数据库表中创建一个或多个索引列,将数据按照特定的顺序组织起来,以便快速地查找和访问数据。 MySQL索引的优点包括: 1. 提高查询性能:索引可以加速查询,减少数据库的IO操作。 2. 优化排序和分组:使用索引可以优化排序和分组查询,提高查询效率。 3. 加速表连接:索引可以加速表的连接操作,提高连接查询的性能。 4. 唯一性约束:索引可以强制表中的数据保持唯一性,防止数据冲突。 MySQL索引的缺点包括: 1. 索引会占用磁盘空间:对于大表,创建索引会占用较大的磁盘空间。 2. 索引降低写入性能:对于频繁的写操作,索引会降低写入性能。 3. 索引需要维护:索引会增加数据库的维护负担,需要定期维护和优化。 使用MySQL索引的原则包括: 1. 在经常被查询的列上创建索引。 2. 尽量使用前缀索引,减少索引占用的存储空间。 3. 避免在过多列上创建联合索引,应根据实际查询需求创建。 4. 避免在索引列上使用函数,这会导致索引失效。 MySQL索引的种类包括: 1. 主键索引:主键索引是一种特殊的唯一索引,用于标识表中的每一行数据。 2. 唯一索引:唯一索引要求索引列的值必须唯一,可以用于保证数据的唯一性。 3. 普通索引:普通索引是最基本的索引类型,用于提高查询性能。 4. 全文索引:全文索引用于匹配文本内容,可以快速检索包含关键词的文本。 5. 聚集索引:聚集索引是按照数据的物理顺序组织数据,用于优化排序和分组查询。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值