MySQL
mysql索引详解
- 索引的创建
- 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