​一、索引的类型​

        mysql索引的四种类型:​​主键索引​​​、​​唯一索引​​​、​​普通索引​​​和​​全文索引​​​。通过给字段​​添加索引​​​可以​​提高数据的读取速度​​​,提高项目的并发能力和抗压能力。​​索引优化​​​时mysql中的一种优化方式。索引的作用相当于​​图书的目录​​​,可以根据目录中的页码​​快速找到所需的内容​​

  •    ​ 主键索引:​  

            主键是一种唯一性索引,但它必须指定为​​PRIMARY KEY​​,每个表只能有一个主键。

alert table tablename add primary key(`字段名`)

  •       ​唯一索引:​

        索引列的所有值都只能出现一次,即必须​​唯一​​,值可以为​​空​​。

alter table table_name add unique index(`字段名`);
#删除旧索引再添加
alter table table_name drop index `字段名` , add unique index(`字段名`);


 

  •     ​普通索引 :​

        ​​基本​​的索引类型,值可以为空,没有唯一性的限制。

alter table table_name add index(`字段名`);

  •     ​全文索引:​
  •         全文索引的索引类型为​​FULLTEXT​​
  •         全文索引可以在​​varcharchartext​​类型的列上创建。
  •         可以通过​​ALTER TABLE​​或CREATE INDEX命令创建。
  •         对于大规模的数据集,通过ALTER TABLE(或者CREATE INDEX)命令创建全文索引要比把记录插入带有全文索引的空表更快。
  •         ​​MyISAM​​支持全文索引,​​InnoDB​​在mysql5.6之后支持了​​全文索引​​。

        全文索引​​不支持中文​​​需要借​​sphinx(coreseek)​​​​​迅搜<、code>技术处理中文。​​

alter table 表名 add FULLTEXT(`字段名`);


​二、查看表的所有索引和删除​

#查看:
show indexes from `表名`;
#或
show keys from `表名`;
#删除
alter table `表名` drop index 索引名;


​三、索引的机制​

1.为什么我们​​添加完索引​​后​​查询速度为变快​​?

    传统的查询方法,是按照表的顺序遍历的,不论查询几条数据,mysql需要将表的数据从头到尾遍历一遍

    在我们添加完索引之后,mysql一般通过​​BTREE算法​​生成一个​​索引文件​​,在查询数据库时,找到索引文件进行​​遍历(折半查找大幅查询效率)​​,找到相应的键从而获取数据

2.索引的代价

    2.1创建索引是为产生索引文件的,​​占用磁盘空间​​

    2.2索引文件是一个​​二叉树类型的文件​​,可想而知我们的dml操作同样也会对索引文件进行修改,所以性能会下降

3.在哪些column上使用索引?

    3.1 较频繁的作为查询条件字段应该创建索引

    3.2 唯一性太差的字段不适合创建索引,尽管频繁作为查询条件,例如gender性别字段

    3.3​​ 更新非常频繁的字段​​​​ 不适合作为索引​​

    3.4​​ 不会出现在where子句中​​的字段​​不该创建索引​​

总结: 满足以下条件的字段,才应该创建索引.

         a: 肯定在where条​​经常使用​​

         b: 该字段的内容​​不是唯一的几个值

        ​​ c: 字段内容​​不是频繁变化​​

​四、查看索引的使用情况​

show status like '%Handler_read%' ;

handler_read_key:这个值越高越好,越高表示使用索引查询到的次数。

handler_read_rnd_next:这个值越高,说明查询低效。

 -----------------------------------
mysql的四种索引类型
https://blog.51cto.com/u_15283585/5157386

Logo

本社区面向用户介绍CSDN开发云部门内部产品使用和产品迭代功能,产品功能迭代和产品建议更透明和便捷

更多推荐