mysl 常见索引

MySQL中常见的索引

 ◆普通索引 

 ◆唯一索引 

 ◆主键索引  

 ◆组合索引 

 ◆全文索引

 ◆外键 (只有innodb存储引擎才支持)

 

普通索引:

这是最基本的索引,它没有任何限制。有以下几种创建方式:

有以下几种创建方式:

◆创建索引

  CREATE INDEX indexName ON tablename(username(length)); 

◆修改表结构

  ALTER tablename  ADD INDEX indexName (username(length))

Tip:length可以小于字段实际长度;如果是BLOB 和 TEXT 类型,必须指定length ,下同

 ◆创建表的时候直接指定

 CREATE TABLE mytableuuu(   ID INT NOT NULL, username VARCHAR(16) NOT NULL,   INDEX indexName (username(length))   );  

 CREATE TABLE mytable(id INT NOT NULL,username VARCHAR(16) NOT NULL);

 create index index1 on mytable(id);  //创建普通索引

mysql 索引

 

◆删掉索引:

  drop index index1 on mytable;

 

如:

create index salary_a on person_info(salary);#为表person_info 中salary添加index索引
alter table person_info add  index(salary);#为表person_info 中salary添加index索引
alter table person_info drop index salary_2;#删除索引salary_2
 

有一个概念,

行定义:在声明字段(列)的时候定义的,比如primary key

表定义:在所有字段(列)声明完之后定义的,比如primary key,index

CREATE TABLE mytable(id INT NOT NULL,username VARCHAR(16) NOT NULL,index index1(username));

 

唯一索引(unique)

索引列的值必须唯一,但允许有空值。

1)创建索引:Create UNIQUE INDEX indexName ON tableName(tableColumns(length))

2)修改表结构:Alter tableName ADD UNIQUE [indexName] ON (tableColumns(length)

3)创建表的时候直接指定:Create TABLE tableName ( [...], UNIQUE [indexName](tableColumns(length)); 

 

主键索引(primary  key)

它是一种特殊的唯一索引,不允许有空值。一般是在建表的时候同时创建主键索引:

CREATE TABLE mytable( ID INT NOT NULL, username VARCHAR(16) NOT NULL,   PRIMARY KEY(ID)   );  

当然也可以用 ALTER 命令。

Tip:记住:一个表只能有一个主键。主键索引就是我们所说的主键。在一个表中,主键只能有一个,但是普通索引和唯一索引可以有多个。

 

组合索引

多列索引,由多个列共同来组成一个索引。

增加组合索引

alter table mytable add index name_city_age(username,city,age);

对于组合索引,必须以最左索引为前缀,依次排列的,才可以使用到组合索引,中间不能有间隔。

下面的可以使用到组合索引:

  ◆ username,city,age   

  ◆ usernname,city   

  ◆ usernname 

下面的不可以使用到组合索引:

  ◆ city,age   

  ◆ city   

  ◆ age 

注意组合索引,如果在某个表中,有多个索引,我们可以考虑一下,使用组合索引来优化。

 


创建索引注意事项:

1,alter table 用来创建普通索引、unique索引或primary key索引。

alter table table_name add INDEX index_name(column_list);

alter table table_name add UNIQUE(column_list);

alter table table_name add PRIMARY KEY(column_list);

tip: 1,column_list指对哪些进行索引,多列时和列之间用逗号进行分隔。
`  2,索引名index_name 可选,缺省时,mysql会根据第一个索引列赋一个名称。
   3,另,alter table允许在单个语句中更改多个表,因此可同时创建多个索引。

2,create index 可对表增加普通索引或unique索引,不能创建主键索引。


create index index_name on table_name(column_list);
create unique index index_name on table_name(column_list);

tip:在这里,索引名不可选。

3,创建索引时,可以规定索引能否包含重复值。如果不包含,则索引应该创建为Primary key或unique索引

alter table table_name add primary key(column);

 

show index from table_name;#查询某表所有的索引

 

参考:http://www.php100.com/html/webkaifa/database/Mysql/2013/0316/12223.html

posted @ 2014-02-11 10:35  milkty  阅读(310)  评论(0编辑  收藏  举报