第一种
create index 索引名 on table 表名 (索引字段(length))
第二种
alter table 表名 add index 索引名 (索引字段(length))
第三种
create table 表名( index 索引名(索引字段) )
索引失效 当用 in 或者 给索引做操作的时候会失效
(3)type:索引类型、类型
system>const>eq_ref>ref>range>index>all ,要对type进行优化的前提:
’
解析过程
from .. on.. join ..where ..group by ....having ...select dinstinct ..order by limit
exlpain 执行计划‘
字段解析
id
id值有相同,又有不同: id值越大越优先;id值相同,从上往下 顺序执行
select_type
PRIMARY:包含子查询SQL中的 主查询 (最外层) SUBQUERY:包含子查询SQL中的 子查询 (非最外层) simple:简单查询(不包含子查询、union) derived:衍生查询(使用到了临时表)
type
system > const > eq_ref > ref > fulltext > ref_or_null > index_merge > unique_subquery > index_subquery > range > index > ALL
ALL 全表查询
index 全索引查询,将所有索引都查询了一遍
range 范围查询像 <> between and
eq_ref 唯一性索引:对于每个索引键的查询,返回匹配唯一行数据(有且只有1个,不能多 、不能0)
ref 非唯一性索引 可重复
possible_key : 可能用到的索引
key' 真实用到的索引
key_len 使用到索引的长度
ref 作用: 指明当前表所参照的 字段。
rows: 被索引优化查询的 数据个数 (实际通过索引而查询到的 数据个数)
Extra:
1. using filesort : 性能消耗大;需要“额外”的一次排序(查询) 。常见于 order by 语句中。 2. using temporary: 性能损耗大 ,用到了临时表。一般出现在group by 语句中。 3. using index 性能提升 索引覆盖,从索引文件获取数据 而非数据文件 4. using where 需要回原表查询
复合索引 不要跨列 和无序使用,否则索引失效