MySQL有索引的特性,索引能够提高查询效率,尤其当数据量非常庞大的情况下,索引的优越性越能得到体现,但天下没有白吃的午餐,索引特性带来的高效查询效率也导致了磁盘空间的占用和数据增删改的速率降低,因此我们也说索引是以时间换空间。
常见的索引有
1.主键索引
1.1创建主键索引
1.1 .1创建表的时候在字段名后指定primary key
create table user1(id int primary key,name varchar(10));
1.1.2 创建表的最后,指定一个或几个主键
create table user2(id int,name varchar(20),primary key(id));
1.1.3表创建好以后用DML语句alter追加主键
alter table user3 add primary key(id);
1.2删除主键
alter table user2 drop primary key;
1.3查询索引
show keys from 表名;
show index from 表名;
desc 表名
2.唯一键索引
2.1 创建唯一键索引
2.1.1 创建表时在字段名后指定唯一键
create table user4(id int unique,name varchar(20));
2.1.2创建表时在表的最后指定唯一键
create table user2(id int,name varchar(20),unique key(id));
2.1.3 创建好表后,用DML语句alter追加唯一键
alter table user1 add unique key(name);
2.2删除唯一键索引
alter table 表名 drop index 索引名(唯一键字段名);
drop index 索引名(唯一键字段名) on 表名;
2.3查询唯一索引
见1.3
3.普通索引
3.1创建普通索引
3.1.1 在创建表的最后指定某列为索引。
create table user5(id int,name varchar(20), index(id));
3.1.2创建好表后追加索引
alter table 表名 add index(字段名);
3.1.3 创建一个索引名为 idx_name 的索引
create index 索引名 on 表名(字段名);
3.2删除普通索引
drop index 索引名 on 表名;
全文索引(fulltext)只有MyISAM存储引擎支持全文索引,但也仅支持英文全文索引,全文索引的创建可以在创建表的时候在表的后面定义全文索引
查询是否用到索引
explain select语句;
索引创建原则:
1.频繁作为条件查询的字段名尽量设置为索引
2.唯一性太差的字段不适合作为索引,即使查询频繁
3.更新非常频繁的字段不适合作为索引