多列索引
多列索引,是指在创建索引时所关联的字段不是一个字段,而是多个字段,虽然可以通过所关联的字段进行查询,但是只有查询条件中使用了所关联字段中的第一个字段,多列索引才会被使用。
1. 创建表时定义索引
CREATE TABLE tablename(
propname1 type1,
……
propnamen type..n,
INDEX | KEY [indexname] (propname1 [(length)] [ ASC | DESC ],
Propname2 [(length)] [ ASC | DESC ],
... ...
Propnamen [(length)] [ ASC | DESC ])
);
注意:和普通索引定义基本相同,不同之处就是增加了多个索引列。
mysql> create table class(id int, name varchar(64), INDEX index_mult_columns (id, name)); //创建class表, 指定id/name为多列索引
mysql> insert into class values(1, '张三'); //插入数据1
mysql> insert into class values(2, '李四'); //插入数据2
mysql> select * from class where id>0 and name='李四';//查询多列
mysql> select * from class where id>0; //查询单列
mysql> select * from class where name='李四'; //查询单列

2. 已存在的表上创建索引
方法一:
CREATE INDEX indexname ON tablename(
propname1 [(length)] [ ASC | DESC ],
Propname2 [(length)] [ ASC | DESC ],
... ...
Propnamen [(length)] [ ASC | DESC ]
);
在上述语句中,关键字CREATE INDEX表示用来创建多列索引。
如下例表已存在,可通过CREATE语句创建多列索引:
mysql> create table class(id int, name varchar(64)); //创建class表
mysql> create INDEX index_mult_columns ON class(id, name); //追加多列索引
mysql> insert into class values(1, '张三'); //插入数据1
mysql> insert into class values(2, '李四'); //插入数据2
mysql> select * from class where id>0 and name='李四';//查询多列
mysql> select * from class where id>0; //查询单列
mysql> select * from class where name='李四'; //查询单列
方法二:
除了上述两种方式来创建全文索引外,在MySQL中创建全文索引还可以通过SQL语句ALTER来实现,其语法形式如下:
ALTER TABLE tablename ADD INDEX|KEY indexname(
propname1 [(length)] [ ASC | DESC ],
Propname2 [(length)] [ ASC | DESC ],
... ...
Propnamen [(length)] [ ASC | DESC ] );
使用方法
mysql> create table class(id int, name varchar(64)); //创建class表
mysql> alter table class add INDEX index_mult_columns (id, name); //追加多列索引
mysql> insert into class values(1, '张三'); //插入数据1
mysql> insert into class values(2, '李四'); //插入数据2
mysql> select * from class where id>0 and name='李四';//查询多列
mysql> select * from class where id>0; //查询单列
mysql> select * from class where name='李四'; //查询单列
本文介绍了MySQL中的多列索引,强调了只有查询条件包含多列索引的第一个字段时,索引才会被使用。创建多列索引可以在创建表时定义,也可以在表已存在时通过CREATE INDEX或ALTER语句添加。提供了创建多列索引的示例和方法。
1269

被折叠的 条评论
为什么被折叠?



