Mysql建表时创建索引

2,642 阅读1分钟

在创建数据表时创建索引的基本语法结构:

CREATE  TABLE  table_name(
属性名  数据类型[约束条件],
……
属性名  数据类型
[UNIQUE  |  FULLTEXT   |   SPATIAL  ]   INDEX  |  KEY
[  别名 ]  (  属性名1   [(  长度  )]   [  ASC  |  DESC  ));

属性值的含义如下:

  1. UNIQUE: 可选参数,表示索引为唯一索引。
  2. FULLTEXT: 可选参数,表示索引为全文索引。
  3. SPATIAL: 可选参数,表示索引为空间索引。
  4. INDEX 和 KEY 参数用于指定字段为索引的,用户在选择时,只需要选择其中的一种即可。
  5. "别名" : 为可选参数,其作用是给创建的索引取新名称。
  6. 属性名1: 指索引对应的字段名称,该字段必须被预先定义。
  7. 长度: 可选参数,其指索引的长度,必须是字符串类型才可以使用。
  8. 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时不会走索引,因为索引排序顺序是由左向右的,只有遵循最左前缀原则才会保证索引有序

谢谢琪爹的指导