首先: explain 的作用:
可以通过explain 去记录展示 MySQL数据库运行的的相关参数;进行慢查询分析优化;
Mysql 中explain中type 类型说明:(级别由低到高,查询速度越来越快)
ALL
INDEX-- 使用索引 where 条件中没有用到索引,但是用索引就能完成扫描全表; 速度有提升;
RANGE ----使用索引范围扫描,索引范围扫描,常见于<、<=、>、>=、between等操作符;
REF----使用非唯一性索引或者唯一索引的前缀扫描,返回匹配某个单独值的记录行; 使用了前缀索引
eq_ref--- 相对于ref来说就是使用的是唯一索引,对于每个索引键值,只有唯一的一条匹配记录; 一般用于联表查询;
CONST or SYSTEM --- 这个是通过索引很快技能定位到一行匹配的数据,就像一个常量一行(很快);
单表中最多只有一条匹配行,查询起来非常迅速,
select * from table_name where tableI_id =' '
table_id 为主键索引,或则唯一索引,
NULL
select 1 from dual; 不通过表就能查询到数据。
截图留念
第二个知识点:
首先是:什么是索引? 为什么要建立索引?
建立索引的目的是:加快表的查询速度,若一张表数据量很小,很快就能找到想要的信息,这样就不需要建立索引,随着表的 数据量增加,这个时候就需要扫描全表,查询到匹配的信息,这样就需要花费更多的时间,这样索引就出
并且很快就能到数据。
建立索引有两种方式: Btree Hash; 现在都采用B+ tree;
索引的分类:
单列索引
|---普通索引 就是纯碎的建立索引,就是为了查询快一点,可有有空值,可以有重复值;
|---唯一索引 单列的值保证不能重复,但是可以有空值,只能有一个;
|---主键索引 特殊的唯一索引,主键值不能为空值
|---组合索引
------ 这个多列索引,最主要的有个最左原则;
|---全文索引
------ 这个是myIsam 引擎下的能建立全文索引, 但是字段必须是varchar clob blog text;