索引
用空间换时间
create index empno_index on emp(empno);
-- empno_index 这是索引的名称
-- emp 表的名字
-- empno 被添加索引的字段名
-
索引类型
-
主键索引,主键自动的为主索引(类型primary key)
-
唯一索引(unique)
-
普通索引(index)
-
全文索引(fulltext)【适用于myisam】
一般开发,不适用mysql自带的全文索引,而是使用:全文搜索solr和elasticsearch(es)
-
create table t1(
id int primary key, -- 主键,同时也是索引,称为主键索引
name varchar(32)
);
create table t2(
id int unique --id 是唯一的,同时也是索引,称为unique索引
);
创建索引
-- 查看表是否有索引
show indexes from t25;
-- 添加唯一索引
create unique index id_index on t25(id);
-- 添加普通索引
create index id_index on t25(id);
-- 如果某列的值,是不会重复的,则优先考虑使用unique索引,否则使用普通索引
-- 添加普通索引方式2
alter table t25 add index in_index(id)
-- 添加主键索引
alter table t26 add primary key(id)
删除索引
drop index id_index on t25
-- 索引名称 表名
-- 删除主键索引
alter table t26 drop primary key
查询索引
show index from t26;
show indexes from t26;
show keys from t26;
desc t26;
创建索引的规则
- 较频繁的作为查询条件字段应该创建索引
- 唯一性太差的字段不适合单独创建索引,即使频繁作为查询条件
- 更新非常频繁的字段不适合创建索引
- 不会出现在where子句中字段不该创建索引。