一、索引的类型
1、普通索引 增加 create index index_name on table(colume(length));
例子:create index index_order_no on t_insruance_new_order(order_no(20))
删除 drop index index_name on table_name /alter table table_name drop index index_name
2、唯一索引 create unique index index_name on table(colume(length));
3、主键索引 主键默认就有索引
4、全文索引 fulltext
5、组合索引 create index index_name_age on t_insruance_new_order_no(name(20),age) //缩小索引的长度可以增加insert的速度
组合索引可以是---name,age或者name ,但是不能是age(遵循"最左前缀原则")
-----索引方法:b_tree和hash方法,通常使用b-tree,hash索引,是进行hash处理后的hash值,大小无顺序,但是效率大于B-tree,因为b-tree是从根节点往枝节点,在到叶节点效率比较低
二、索引的形式
1、单列索引,多列索引 查询时候,mysql只能执行一个索引,所以多列索引会找出这几个索引中限制最高的一个索引,进行查询
三、使用索引的时机
一般来说,在where和join中需要创建索引,但是也不完全是,因为mysql只对> ,>=, =,<=,<,between,in 和一些like时候才使用索引,
例子:使用like时候要特别注意这一点
对于like来说,使用通配符号(%或者_)开头时候不会使用索引
select * from mytable where name like "%俊"; 不会使用索引
select * from mytable where name like "杨%"; 会使用索引
四、索引的不足之处
1、建立索引会增加查询的速度,会降低更新表的速度,更新表(update.delete.insert.)对表格进行更新的同时,还会对索引文件进行更新
2、建立索引会占用磁盘空间的索引文件,一般情况下不会有太大问题,但是在一个大数据表格中,创建了多种组合索引,索引文件会膨胀的很 快。
五、使用索引的注意事项
1、有null值的列,索引失效,所以创建索引的列默认为非null
2、使用短索引,可以提高检索速度,还可以减少磁盘空间和io操作
3、索引列的排序,mysql查询只使用一个索引,所以多个索引查询只有用一个最严格的索引,为了提升查询的效率可以添加组合索引,
4、like模糊查询,通配符放在最前面,索引失效
5、不要在列上进行计算 select * from mytable where date(time)>‘2007‘;索引失效---where time>‘2007-01-01‘
6、不适用not in和 <>操作