Java教程

SQL索引优化

本文主要是介绍SQL索引优化,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!

创建索引

第一种

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 需要回原表查询
复合索引 不要跨列 和无序使用,否则索引失效
这篇关于SQL索引优化的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!