前言
多列索引,是指在创建索引时所关联的字段不是一个字段,而是多个字段,虽然可以通过所关联的字段进行查询,但是只有查询条件中使用了所关联字段中的第一个字段,多列索引才会被使用。
一、创建表时定义索引
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 database school; #创建数据库school mysql> use school; #选择数据库school mysql> create table class(id int, name varchar(128) UNIQUE, teacher varchar(64), INDEX index_mult_columns(id, teacher)); #创建表class, 并建立包含id,teacher字段的多列索引 mysql> show create table class; #查看表定义 mysql> insert into class values(1, '一班', 'Martin'); # 插入记录1 mysql> insert into class values(1, '二班', 'Rock'); # 插入记录2 mysql> select * from class where id > 0 ; #仅根据id查询记录会启用多列索引 |
二、已存在的表上创建索引
方法一:执行 create 语句
CREATE INDEX indexname
ON tablename( propname1 [(length)] [ ASC | DESC ],
Propname2 [(length)] [ ASC | DESC ],
... ...
Propnamen [(length)] [ ASC | DESC ] );
在上述语句中,关键字CREATE INDEX表示用来创建多列索引。
如下例表已存在,可通过CREATE语句创建多列索引:
mysql> create database school; #创建数据库school mysql> use school; #选择数据库school mysql> create table class(id int, name varchar(128) UNIQUE, teacher varchar(64)); #创建表class, 并建立为id 字段索引 mysql> create index index_id on class(id, name ); #追加多列索引 mysql> show create table class; #查看表定义 |
方法二:执行 alter table 语句
除了上述两种方式来创建全文索引外,在MySQL中创建全文索引还可以通过SQL语句ALTER来实现,其语法形式如下:
ALTER TABLE tablename
ADD INDEX|KEY indexname(propname1 [(length)] [ ASC | DESC ],
Propname2 [(length)] [ ASC | DESC ],
... ...
Propnamen [(length)] [ ASC | DESC ] );
总结
以上就是今天要讲的内容,本文仅仅简单介绍了多列索引的使用。