SQL关键字执行顺序,优化,索引概念

Sql 优化:
  
原因:性能低,执行时间太长,等待时间太长,sql语句欠佳,连接查询,索引失效,服务器参数设置不对

编写过程:

   select...dinstinct .. from ..join ..on ..where..group by ...having ..order by ..limit .. 

解析过程:

  from .. on ...join ..where ..group by ...having .select dinstinct ..order by ..limit..
 

sql 优化 ,主要就是在优化索引

 索引: 相当于书的目录,index 是帮助MySQL 高效获取数据的数据结构(树 b树 hash树)


 B树索引:

 小的放左 大的放右

SQL关键字执行顺序,优化,索引概念

SQL关键字执行顺序,优化,索引概念

索引的弊端:
 
1.索引本身很大,可以存放在内存/硬盘, 通常为硬盘

2. 索引并不是所有情况均适用:少量数据,频繁更新的字段 ,很少使用的字段

3.索引会降低增删改的效率 提高查的效率

 

优势:提高查询效率

降低了IO使用率

降低cpu使用率 因为b树索引 本身就是一个好排序的结构

 

3层 Btree 可以存放 上百万条数据

Btree: 一般都是指B+ ,数据全部存放在叶节点中

B+ 树 中查询任意的数据次数 n次 (B+树的高度)

SQL关键字执行顺序,优化,索引概念

索引

分类: 单值索引 唯一索引 复合索引

主键索引:不能重复,主键不能为null

单值索引: 单列 age:一个表可以多个单值索引,name。。

唯一索引:  不能重复。id  可以是null

复合索引:  多个列构成的索引 类似书的二级目录 :z ->zhao 赵    |( name ,age)

 

创建索引:
 
 方式一: create 索引类型 索引名 on 表(字段) 

 单值索引:create index  

SQL关键字执行顺序,优化,索引概念

 方式二: alter table 表名 索引类型 索引名(字段) 

SQL关键字执行顺序,优化,索引概念

注意: 如果一个字段是primary key, 则改字段默认就是主键索引

删除索引:
drop index 索引名 on 表名 

查询索引:
show index from 表名;