MySQL创建索引

一、索引类型

  • 普通索引
  • 唯一索引
  • 主键索引
  • 组合索引
  • 全文索引

查询索引:show index from emp;

二、普通索引

是最基本的索引,它没有任何限制。
在创建索引时,可以指定索引长度。length 为可选参数,表示索引的长度,只有字符串类型的字段才
能指定索引长度,如果是BLOB和TEXT类型,必须指定length。
创建索引时需要注意:如果指定单列索引长度,length 必须小于这个字段所允许的最大字符个数。

create table emp1(id int,name varchar(30),salary float(8,2),address varchar(50),index emp1_id_index(id(20)));创建表添加索引

create index emp_name_index on emp(last_name);创建索引

alter table emp add index emp_salary_index(salary);添加索引

drop index emp_name_index on emp;删除索引

alter table emp drop index emp_index_i_n;删除索引

三、唯一索引

唯一索引与普通索引类似,不同的就是索引列的值必须唯一,但允许有空值。

create table emp1(id int,name varchar(30),salary float(8,2),addrees varchar(50),unique emp1_name_index(name));创建表时添加索引

create unique index emp_name_index on emp(last_name);创建索引

alter table emp add unique emp_name_index(last_name); 添加索引

四、主键索引

主键索引是一种特殊的唯一索引,一个表只能有一个主键,不允许有空值。一般是在建
表的时候同时创建主键索引。当存在主键约束时,系统自动添加主键索引。

alter table emp add primery key(id);创建主键约束即创建主键索引

alter table emp drop primary key; 删除索引

五、组合索引

组合索引是指使用多个字段创建的索引,只有在查询条件中使用了创建索引时的第-一个
字段,索引才会被使用(最左前缀原则)。

就是最左优先。
如:我们使用表中的name,address, salary 创建组合索引,那么想要组合索引生效,
我们只能使用如下组合:
name/ address/ salary
name/ address
name/
如果使用addrees/salarv 或者是salarv 则索引不会牛效。

create table emp1(id int,name varchar(30),salary float(8,2),addrees varchar(50),index emp_index_i_n(id,name));创建表时添加索引

create index emp_index_n_s on emp(last_name,salary);创建索引

alter table emp add index emp_index_i_n(emp_id,last_name); 添加索引

alter table emp drop foreign key dept_id_fk; 删除约束
alter table emp drop index dept_id_fk; 删除索引

六、全文索引

全文索引(FULLTEXT INDEX)主要用来查找文本中的关键字,而不是直接与索引中的值
相比较。FULLTEXT索引跟其它索引大不相同,它更像是一个搜索引擎,而不是简单的where
语句的参数匹配。FULLTEXT 索引配合match against操作使用,而不是一-般的where语句
加like.
全文索引可以从CHAR、VARCHAR或TEXT列中作为CREATE TABLE语句的- -部分
被创建,或是随后使用ALTER TABLE添加。不过切记对于大容量的数据表,生成全文索
引是一个非常消耗时间非常消耗硬盘空间的做法。

create table emp1(id text,fulltext emp1_id_fulltext(id));创建表时添加索引

create fulltext index emp_news_fullindex on emp(news);创建索引

alter table emp add (news text,fulltext emp_news_fullindex(news)); 添加索引

alter table emp drop index emp_news_fullindex; 删除索引
drop index emp_news_fullindex on emp; 删除索引

select * from emp8 where match(contr) against('hello');使用

alter table emp8 add fulltext index emp8_contr_fulltext1(contr) with parser ngram;使用NGRAM分词
posted @ 2021-10-22 22:29  白_沙  阅读(1436)  评论(0编辑  收藏  举报