@Chiang
2019-09-18T15:00:38.000000Z
字数 1245
阅读 806
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 tablealter table table_name drop index index_name;# drop indexdrop 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在搜索数据记录时可选用的各个索引.keyMySQL实际选用的索引.key_len索引按字节计算的长度, key_len数值越小,表示越快.ref表示哪一列被使用了,常数表示这一列等于某个常数.rows大致找到所需记录需要读取的行数.extra一些重要的额外信息
参考资料:
MySQL5.7从入门到精通
mysql中explain详解
索引(三)MySQL SHOW INDEX
对比:
数据表的基本操作
