MySQL

mysql索引详解

  1. 索引的创建
  • 1.1主键索引的创建有两种形式,1、创建表的时候,直接指定某列或者某几列为主键,这时就有了主键索引。2、添加表以后在添加主键索引。

1、 直接创建主键索引:create table 表名(id int primary key ,name vachar(32),not null default '');

2、创建表之后在指定主键索引:create table 表名(id int,name vachar(32),not null default '');  alter table 表名 add primary key(列名1(id),列名2,....);

  • 主键索引的特点:

(1) 一个表最多只能有一个主键

(2) 一个主键可以指向多列(复合主键)

(3) 主键索引的效率是最高,因此我们应该给id,一般id是自增

(4) 主键索引列是不能重复,也不能为null

  • 1.2唯一索引的创建:

1、直接在创建表的时候,指定某列或某几列为唯一索引

create table 表名(id int primary key ,name vachar(32),not null default '',email varchar(64) unique);//这个时候就创建了id索引和email索引  使用关键字unique

2、把表创建好以后。在指定某列或者某几列为唯一索引

create table 表名(id int primary key ,name vachar(32),not null default '',email varchar(64));//创建表之后只制定了ID的索引并没有指定email的索引.

create unique index uni_email on 表名 (email) 索引名称(可以随便取名字)//创建指定字段的索引

说明:使用create unique index 指定。必须指定索引名称

alter table 表名 add unique (列名);

说明:使用 alter table 指令,可以指定索引名,也可以不指定索引名称。如果没有指定索引名称,那么索引名称就和列名相同。

  • 唯一索引的特点:

(1)一张表可以有多个唯一索引

(2)唯一索引不能重复, 但是如果你没有指定not null,唯一索引列可以为null,而且可以有多个。

(3) 什么时候使用唯一索引:当某列数据不会重复,才能使用

(4)唯一索引效率也很高,可以考虑优先使用。

  • 1.3普通索引的创建:

1、把表创建好之后,在指定某列或者某几列为索引

create table 表名(id int primary key ,name vachar(32),not null default '',email varchar(64) not null unique );

  • 添加普通索引 :

1、create index 索引名称(可以随便取名字) on 表名 (字段名)   eg:create index ind_name on aaa (name);

2、alter table 表名 add index (字段名) ;eg: alter table aaa add index (name);

  • 特点:

(1)一张表中可以有多个普通索引,一个普通索引页可以指向多列

(2)普通索引列的数据可以重复

(3)效率相对较低

1.4全文索引

概述:全文索引是针对文章,汉字,英文的检索,可以快速的检索到文章中的某个关键字

  • 全文索引的添加

1、创建数据库的时候添加全文索引

create table 表名(id int unsigned auto_increment not null primary key,title varchar(200),body text,fulltext(title,body)) engine=myisam charset=utf8;

2,使用 match(字段名,字段名,...) against(需要查询的关键字) 关键词才能用。

 select * from 表名 where match(title,body) against('zfq');

 

  • 特点

(1) mysql 默认的全文索引,只对MyISAM存储引擎

(2)mysql 默认的全文索引,只支持中文

(3)停止词:对于特别普通的字母,不会建立索引

(4)匹配度:全文索引是安一定概率来匹配。

 

解决mysql全文索引不支持中文的问题:

(1)使用mysql的一个中文插件mysqlcft

(2)可以使用中文检索引擎 sphinx 中文版(coreseek)

2索引的查询

desc 表名

show keys from 表名\G

3索引的修改

先删除,在添加。

4索引的删除

第一种方式:drop index 索引名 on 表名;

第二种方式:alter table 表名 drop index 索引名

 

5索引的原理

二叉树原理。

6索引的注意事项

linux下导出sql

1
mysqldump -u [username] -p [database_name] > [/path/dumpfilename.sql]

例如:`mysqldump -u root -p mywordpress > /var/mywordpress.sql

posted @ 2016-10-11 18:08  岁月必然的流逝  阅读(163)  评论(0编辑  收藏  举报