一、索引分为4种:
1.普通索引
基本的索引类型,值可以为空,没有唯一性限制。大多数情况下都可以使用
alert table table_name add index (`字段名`)
2.主键索引
主键索引是一种唯一索引,但它指定列必须为主键(每个表只能有一个主键)
alert table table_name add primary key (`字段名`)
3.唯一索引
索引列的值只能出现一次,保持唯一性。值可以为空。
alert table table_name add primary key (`字段名`)
4.全文索引
全文索引可以在varchar、char、text类型的列上创建
alert table table_name add FULLTEXT (`字段名`)
二、查看所有索引及删除索引
查看:
show indexes from 表名
show keys from 表名
删除:
alert table 表名drop index 索引名
三、为什么要使用索引,怎么使用索引
1.为什么使用索引
索引可以对mysql查询速度进行优化。
正常不使用索引时,mysql的查询方式为按照表的顺序遍历,也就是不论你想要查什么数据,mysql都需要从头到尾遍历一遍。这显然是有些问题的,因为当我们的数据量变得很庞大的时候这样查肯定会对查询效率有影响。
当我们添加索引后,mysql会通过 BTREE 算法 生成一个索引文件 ,这时我们再通过mysql进行查询的时候,mysql就不会对表遍历查询而是对索引文件遍历查询找到对应的key获取数据
2.什么时候可以使用索引
经常需要查询的字段可以创建索引
3.使用索引需要注意什么
首先索引虽然很好用,但并不是创建越多越好,因为创建索引会生成索引文件,所以创建索引是有代价的,像是更新很频繁的字段、不会出现在where条件的字段、唯一性差的字段这样的字段就不适合创建索引,这时候使用只会弊大于利。
注意: 有些时候创建了索引但是索引不一定生效:
1.使用复合索引时,要遵守最左前缀原则。即要使用复合索引时条件中不能跳过索引列中最左边字段
2.索引使用模糊查询时 like后边 不能以%开头,可以以%结尾
3.使用条件 or 时 必须保证条件中每个列都加入了索引,否则不会生效
4.如果列类型为字符串必须加单引号
5.对索引使用函数时大多时候索引都会失效
------------------------------------------------------------------------------------------------------------------------------