在创建数据表时创建索引的基本语法结构:
CREATE TABLE table_name(
属性名 数据类型[约束条件],
……
属性名 数据类型
[UNIQUE | FULLTEXT | SPATIAL ] INDEX | KEY
[ 别名 ] ( 属性名1 [( 长度 )] [ ASC | DESC ));
属性值的含义如下:
- UNIQUE: 可选参数,表示索引为唯一索引。
- FULLTEXT: 可选参数,表示索引为全文索引。
- SPATIAL: 可选参数,表示索引为空间索引。
- INDEX 和 KEY 参数用于指定字段为索引的,用户在选择时,只需要选择其中的一种即可。
- "别名" : 为可选参数,其作用是给创建的索引取新名称。
- 属性名1: 指索引对应的字段名称,该字段必须被预先定义。
- 长度: 可选参数,其指索引的长度,必须是字符串类型才可以使用。
- ASC/DESC: 可选参数,ASC 表示升序排列,DESC 表示降序排列。
例如,创建一个唯一索引:
mysql> CREATE table address(
-> id int(11) auto_increment primary key not null,
-> name varchar(50),
-> address varchar(200),
-> UNIQUE INDEX address(id ASC)
-> );
创建一个聚合索引
mysql> create table information(
-> inf_id int(11) auto_increment primary key not null,
-> name varchar(50) not null,
-> sex varchar(5) not null,
-> birthday varchar(50) not null,
-> index info(name,sex)
-> );
需要注意使用聚合索引遵循最左前缀原则,即select name或者select (name,sex)时走索引,select sex时不会走索引,因为索引排序顺序是由左向右的,只有遵循最左前缀原则才会保证索引有序
谢谢琪爹的指导