一、mysql索引简介
主要有主键索引、唯一索引、普通索引和全文索引四类。给字段添加索引可以提高数据的读取速度,提高项目的并发能力和抗压能力。索引优化也是masql的一种优化方式,索引的作用相当于字典的目录一样,根据字典目录定位快速找到需要的内容。
主键索引:
主键是一种唯一性的索引,但它必须指定为PRIMARY KEY
,每个表只能有一个主键。
唯一索引:
索引列的值要保持唯一,值可以为空。
普通索引:
普通索引是基本的索引类型,值可以为空,没有唯一性。
全文索引:
全文索引类型是FULLTEXT。全文索引可以在varchar
、char、text
类型的列上创建。可以通过ALTER TABLE
或 CREATE INDE命令创建。对于大规模的数据集,通过ALTER TABLE(或者 CREATE INDEX)命令创建全文索引要比把记录插入带有全文索引的空表更快。
全文索引不支持中文需要借助其他技术处理中文
二、查看的所有的索引和删除
三、索引的机制
1、为什么添加索引后查询速度会变快?
传统的查询方法,是按照表的顺序遍历的,不论查询几条数据,mysql 需要将表的数据从头到尾遍历一遍,在我们添加完索引之后,mysql 一般通过BTREE
算法
生成一个索引文件
,在查询数据库时,找到索引文件进行遍历
,找到相应的键从而获取数据,可以大幅度提升效率。
2、在哪些column上使用索引?
较频繁作为查询条件的字段应该创建索引,唯一性太差的字段不适合创建索引,尽管查询频繁,但是比如性别字段gender,唯一性就太差,更新非常频繁的字段不适合创建索引,创建索引的话,查询时数据误差,不会出现在where子句中的字段不该创建索引。
总结如下:
满足肯定在where条经常使用,该字段内容不是唯一的几个值,字段内不会频繁变化。
四、查看索引的使用情况
handler_read_key:这个值越高越好,越高表示通过索引查询到的次数越多。
handler_read_rnd_next:这个值越高,说明通过索引查询到的次数越少。