原理
当没有索引时,mysql进行全表扫描,速度较慢。
底层建立二叉树,搜索很快
索引的代价
- 磁盘占用
如果对表进行dml操作(修改,删除,添加)会对索引进行维护,会影响效率
索引的类型
主键索引,主键自动为主索引(类型Primary Key)
- 唯一索引(UNIQUE)
- 普通索引(INDEX)
- 全文索引(FULLTEXT)【适用于MyISAM】
一般开发不使用mysql自带的全文索引,而是使用:全文搜索Solr和ElasticSearch(ES)
添加唯一索引:
CREATE UNIQUE INDEX 索引名 ON 表(字段);
添加普通索引1:
CREATE INDEX 索引名 ON
添加普通索引方式2:
ALTER TABLE * ADD INDEX ();
添加主键索引:
ALTER TABLE * ADD PRIMARY KEY ();
删除索引:
DROP INDEX * ON *;
删除主键索引:
ALTER TABLE * DROP PRIMARY KEY;
查询索引:
1 SHOW INDEX FROM :
2 SHOW INDEXES FROM :
3 SHOW KEYS FROM *:
索引规则
- 较频繁的作为查询条件字段应该创建索引
- 唯一性太差的字段不适合单独创建索引,即使频繁作为查询条件
- 更新非常频繁的字段不适合创建索引
- 不会出现在WHERE子句中字段不该创建索引
