一.前言
如果合理的设计且使用索引的MySQL是一辆兰博基尼的话,那么没有设计和使用索引的MySQL就是一个人力三轮车。
拿汉语字典的目录页(索引)打比方,我们可以按拼音、笔画、偏旁部首等排序的目录(索引)快速查找到需要的字。
实际上,索引也是一张表,该表保存了主键与索引字段,并指向实体表的记录。
虽然索引大大提高了查询速度,同时却会降低更新表的速度,如对表进行INSERT、UPDATE和DELETE。
因为更新表时,MySQL不仅要保存数据,还要保存一下索引文件。
二.索引类型
UNIQUE(唯一索引):索引列的值必须唯一,但允许有空值。
INDEX(普通索引):允许出现相同的索引内容;
PROMARY KEY(主键索引):主键只能作用于一个列上,添加主键索引时,你需要确保该主键默认不为空(NOT NULL)
组合索引:将多个字段建到一个索引里,列值的组合必须唯一;
三.用alter table 语句创建索引
格式: ALTER TABLE 表名 ADD 索引类型 (unique,primary key,fulltext,index)[索引名](字段名);
-- 普通索引
alter table table_name add index index_name (column_list);
Eg:alter table dict_item add INDEX index_itemIds(ITEM_ID);
-- 唯一索引
alter table table_name add unique (column_list) ;
Eg:alter table dict_item DROP index index_itemIds;
-- 主键索引
alter table table_name add primary key (column_list);
Eg:alter table dict_item add PRIMARY KEY(ITEM_ID);
四.删除索引
drop index index_name on table_name ;
alter table table_name drop index index_name ;
alter table table_name drop primary key ;
五.查询所有的主键
SHOW INDEX FROM dict_item;