MySQL——(二)什么是索引?MySQL有哪几种索引?

  • Post author:
  • Post category:mysql




什么是索引?MySQL有哪几种索引?


总览


  • 索引

    用于快速找出在某行的数据,如果不使用索引,MySQL必须从第一条记录开始读取整个表,直到找到相关的行
  • 表越大,查询数据所花费的时间就越多,通过索引MySQL能够快速到达某一行的位置去搜索数据文件,节省很大一部分的时间


一、索引

  • MySQL可以给任意字段设置索引

  • 创建索引和维护索引要耗费时间,并且随着数据量的增加所耗费的时间也会增加,当对表的数据进行增加、删除、修改时,索引也需要动态的维护,降低了数据的维护速度

  • 占用一定的空间,我们知道

    数据表中的数据也会有最大上限

    设置的,如果我们 有大量的索引,索引文件可能会比数据文件更快达到上限值


    使用原则

    1、并不是每个字段都设置索引,索引也不是越多越好

    2、

    对经常更新的表就避免对其进行过多的索引,对经常用于查询的字段应该创建索引

    3、一个字段,如果重复的值很多,不要建立索引,比如性别字段上只有男、女两个不同的值;相反的,如果不同值较多建议使用索引



二、索引分类

(1)

单列索引

一个索引只包含单个列,一个表中可以有多个单列索引,单列索引包含:


  • 普通索引

    :MySQL中基本索引类型,没什么限制,允许在定义索引的列中插入重复值和空值,纯粹为了查询数据更快一点

  • 唯一索引

    :索引列中索引的值必须是唯一的,但是允许里面有空值

  • 主键索引

    :是一种特殊的唯一索引,不允许里面有空值

(2)

组合索引

对表中的多个字段进行组合,然后创建索引,只有在查询条件中使用了这些字段的左边字段,索引才会被使用,使用组合索引时,

遵循最左前缀集合

(3)

全文索引



  • 只有MyISAM引擎支持


    ,在CHAR、VARCHAR、TEXT类型字段上可以使用全文索引
  • 全文索引就是在一堆文字中,通过其中的某个关键字等,就能找到该字段所属的记录行,比如“你好,…”,通过“你好”,就可能找到该条记录




通过EXPLAIN关键字,可以查看索引是否真正被使用,并且输出其使用的索引信息




版权声明:本文为weixin_47163086原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。