# 创建索引
// 创建索引能极大的优化查询速度,但会占用非常大的空间,空间换时间
-- 根据该索引查数据就能提高速度,否则不会提高速度
-- 可以创建多个索引
create index 索引名 on 表名 (列名)
# 删除索引
// 查询索引
show index from 表名
show indexes from 表名
show keys from 表名
desc 表名
// 删除索引
drop index 索引名 on 表名
-
索引的原理
-
- 没有索引会查找数据会进行全表扫描,当有大量数据时查询效率低
- 有索引会创建二叉排序树(b+树)
-
索引的代价
-
- 磁盘占用
- 对dml(update delete insert)语句的效率影响
#索引的类型
-- 1.主键索引,主键自动的为主索引(primary key)
-- 2.唯一索引,unique
-- 3.普通索引(index)
-- 4.全文索引(fulltext)[适用于mylsam],开发中考虑Solr和ElasticSearch
create table t1(
id int primary key, -- 主键索引
name varchar(32));
create table t2(
id int unique, -- 唯一索引
name varchar(32));
-
创建索引的规则
-
- 较频繁的作为查询条件字段应该创建索引
- 唯一性太差的字段不适合单独创建索引,及使用频繁作为查询条件
- 更新非常频繁的字段不适合创建索引
- 不会出现在where子句中的字段不创建索引