一、引擎:
主要的引擎:MyISAM、InnoDB
手写顺序:
执行顺序:
二、索引
是一种数据结构,可以提高查找效率,排好序的快速查找数据结构
,b树索引,索引很大,因此以文件的方式存在于磁盘上,每次更新表的时候要重新更新索引,因此查找效率提高,表的更新变慢分类:
单值索引:一个索引只包含单个列,一个表可以有多个单列索引
唯一索引:列的值必须唯一,允许有空值
复合索引:一个索引包含多个列
索引结构:b树
适合建立索引的情况:
1)主键自动建立唯一索引
2)频繁作为查询字段的关键字应该创建索引
3)外键
不适合创建索引的情况:
1)频繁更新的字段
2)where条件里用不到的字段
3)表记录太少
4)包含重复的内容过多
mysql优化:
索引优化:
单表优化:
where和order by需要建立索引,且建立的联合索引中间的字段不能包含模糊查询,否则extra会出现using filesort
双表优化:
左连接,最终的表格左边表格均有,因此对右表建立索引
右连接,最终的表格右边表格均有,因此对左表建立索引
索引失效:
1)最佳左前缀法则:(只要包含了前面几个,顺序不重要)
2)不能在索引上做操作,比如where筛选条件不能使用函数
3)不能出现范围查找:(范围后面的失效是指建立索引的顺序)
4)is null和is not null无法使用索引
5)like查找,在右边加百分号才会使用索引**(使用覆盖索引来优化,即建立索引(多个索引)的字段包括了查询(select)以及筛选(where)的字段)**
6)or,所有字段都会失效