索引操作
创建主键索引
- 法1
在创建表的时候,在字段后面添加primary key就行了,会自动创建一个b+树来管理
create table user1 (id int primary key);
空间不会不够,b+树可以局部加载
- 法2
在创建表的最后,指定某列或者某几列是主键索引
create table u1 ( id int, name varchar(12), primary key(id));
- 法3
使用alter
alter table u1 add primary key(id);
查看索引
show index from u1\G;
删除主键索引
alter table u1 drop primary key;
再查看
- 创建唯一键索引
创建普通键索引
- 法1:在键表的时候,就指定某列为索引,必须要有主键索引
create table u3(name varchar(12),id int primary key,index (name));
一定是有两个b+树,一个表可以有好多个索引
- 法2:在建表之后,使用alter来增加
alter table u3 add index (name);
- 法3:使用create index来增加索引
create index myindex on u3 (name);
创建的时候给这个表起一个别名
删除普通索引
alter table u3 drop index name;
唯一键索引
- 法1
create table u2 (id int primary key,name varchar(12) unique);
唯一键和普通索引没有任何差别,它只不过是多加了一个UNI,这个关键字
- 法2
表已经键好了,在创建唯一键
alter table uu add unique(name);
全文索引
我们目前所有索引建立都是基于一列的,而且我们一列信息都不大
但是如果一列是文章呢?100000字,
当文章字段或者有大量文字的字段进行检索式,会使用全文索引,MySQL提供全文索引机制,但是又要求,必须是使用mysiam,而且默认的全文索引支持英文,不支持中文
索引创建原则
不能无脑添加索引
- 比较频繁作为查询条件的字段应该创建索引
- 唯一性太差的字段不适合单独创建索引,即使频繁作为查询条件
- 更新非常频繁的字段不适合创建索引
- 不会再where自居中的字段不该创建索引