@Chiang
2019-09-18T23:00:38.000000Z
字数 1245
阅读 558
MySQL
1.普通索引和唯一索引
2.单列索引和组合索引
3.全文索引
4.空间索引
# 创建表的时候创建索引
create table table_name [col_name data_type]
[unique | fulltext | spatial] [index | key] [index_name] (col_name [length]) [asc | desc]
# 在已存在的表上创建索引
alter table table_name add [unique | fulltext | spatial] [index | key] [index_name] (col_name[length],...) [asc | desc]
# 使用create index 创建索引 MySQL中create index 被映射到一个alter table语句上
create [unique | fulltext | spatial] index index_name on table_name (col_name[length],...) [asc | desc]
show index from book \G;
参数意义:
table
创建索引的表.non_unique
表示索引非唯一, 1代表是非唯一索引, 0代表唯一索引.key_name
表示索引的名称.seq_in_index
表示该字段在索引中的位置,单列索引该值为1,组合索引为每个字段在索引定义中的顺序.column_name
表示定义索引的列字段.sub_part
表示索引的长度null
表示该字段是否能为空值index_type
表示索引类型.
# alter table
alter table table_name drop index index_name;
# drop index
drop index index_name on table_name;
explain select * from book where id=1 and name='joe' \G;
explan 语句输出结果的各个行解释:
select_type
指定所使用的select查询类型,这里值为simple,表示简单的select,不使用union或子查询.其他可能的取值有:primary、union、subquery等.table
指定数据库读取的数据表的名字,他们按被读取的先后顺序排列.type
指定了本数据表与其他数据表之间的关联关系,可能的取值有system、const、eq_ref、ref、range、index和all.possible_keys
给出了MySQL在搜索数据记录时可选用的各个索引.key
MySQL实际选用的索引.key_len
索引按字节计算的长度, key_len数值越小,表示越快.ref
表示哪一列被使用了,常数表示这一列等于某个常数.rows
大致找到所需记录需要读取的行数.extra
一些重要的额外信息
参考资料:
MySQL5.7从入门到精通
mysql中explain详解
索引(三)MySQL SHOW INDEX
对比:
数据表的基本操作