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树索引:
小的放左 大的放右
索引的弊端:
1.索引本身很大,可以存放在内存/硬盘, 通常为硬盘
2. 索引并不是所有情况均适用:少量数据,频繁更新的字段 ,很少使用的字段
3.索引会降低增删改的效率 提高查的效率
优势:提高查询效率
降低了IO使用率
降低cpu使用率 因为b树索引 本身就是一个好排序的结构
3层 Btree 可以存放 上百万条数据
Btree: 一般都是指B+ ,数据全部存放在叶节点中
B+ 树 中查询任意的数据次数 n次 (B+树的高度)
索引
分类: 单值索引 唯一索引 复合索引
主键索引:不能重复,主键不能为null
单值索引: 单列 age:一个表可以多个单值索引,name。。
唯一索引: 不能重复。id 可以是null
复合索引: 多个列构成的索引 类似书的二级目录 :z ->zhao 赵 |( name ,age)
创建索引:
方式一: create 索引类型 索引名 on 表(字段)
单值索引:create index
方式二: alter table 表名 索引类型 索引名(字段)
注意: 如果一个字段是primary key, 则改字段默认就是主键索引
删除索引:
drop index 索引名 on 表名
查询索引:
show index from 表名;