索引和引擎小结

一,索引
1,索引作用:
(1)加快查询速度
(2)唯一性
(3)文本搜索,MyISAM索引
2,索引缺点:
(1)虽然增加查询速度,但是降低增删改的速度,增删改操作时候需要修改索引。
(2)占用磁盘空间。
3,索引分类 :
主键索引primary(id)
唯一索引unique(name)
普通索引index(age)
 
4,
主键和唯一索引有单个索引和组合索引。
普通索引有单列索引和多列索引,多列索引遵循最左前缀原则。
 5,
只有通过索引条件检索数据,InnoDB才使用行级锁,否则,InnoDB将使用表锁。
 6,什么情况下使用索引
在WHERE和JOIN中出现的列需要建立索引,但也不完全如此,因为MySQL只对<,<=,=,>,>=,BETWEEN,IN,以及某些时候的LIKE才会使用索引。以下情况不会使用索引:
(1)含有NULL值的列
(2)like “%aaa%”
(3)列上进行运算,where YEAR(adddate)<2007
(4)使用NOT IN和<>操作符
二,存储引擎
(1)MyISAM使用非聚簇索引方式存储,索引和数据分离的,适合读写。支持表级锁。
(2)InnoDB使用聚簇索引方式存储,索引和数据一起,适合频繁更新,支持事务、外键、表级锁和行级锁。
(3)清空整张表时候,InnoDB是一行一行删除,效率非常慢,MyISAM则会重建表,效率高。
(4)MyISAM保存表的行数,InnoDB不保存,select count(*)时候MyISAM效率更高。
(5)只有通过索引条件检索数据,InnoDB才使用行级锁,否则,InnoDB将使用表锁。
原文地址:https://www.cnblogs.com/usa007lhy/p/7002515.html