mysql在建表语句中添加索引

普通索引建立

建立普通索引,即不添加 UNIQUE、FULLTEXT 等任何参数。.net

【例】建立表名为 score 的数据表,并在该表的 id 字段上创建索引,SQL 语句以下:code

CREATE table score(
    id  int(11)  AUTO_INCREMENT  primary  key  not  null,
    name  varchar(50)  not null,
    math  int(5)  not null,
    English  int (5)  not null,
    Chinese  int (5) not  null,
    index(id)
);

此时在id字段上创建的普通索引名字为id,在id字段创建的,索引方法为BTREE,索引类型为normal

建立惟一索引

建立惟一索引时,使用 UNIQUE 参数进行约束。orm

【例】建立表名为 address 的数据表,并在该表的 id 字段上创建惟一索引,SQL 语句以下:blog

CREATE  table address(
    id  int(11)  auto_increment  primary  key  not  null,
    name  varchar(50),
    address  varchar(200),
    UNIQUE  INDEX  address(id  ASC)
);

此时在id字段上创建的惟一索引,索引名字为address,索引方法BTREE为,索引类型为Unique

建立前缀索引(某字段前*个字节)
建立单列索引,即在数据表的单个字段上建立索引。建立该类型索引不须要引入约束参数,用户在创建时只须要指定单列字段名,便可建立单列索引。

【例】建立名称为  telephone  的数据表,并指定在  tel  字段上创建名称为  tel_num  的单列索引,SQL  语句以下:索引

create  table  telephone(
    id  int(11)  primary key auto_increment  not  null,
    name  varchar(50)  not  null,
    tel  varchar(50)  not null,
    index  tel_num(tel(20))
);

此时在tel字段上创建的普通索引,索引名字为tel_num,索引方法为BTREE,索引类型为normal,索引取的是tel字段前20为字节创建索引

前缀索引没法使用覆盖索引

建立全文索引

全文索引只能做用在 CHAR、VARCHAR、TEXT、类型的字段上。建立全文索引须要使用 FULLTEXT 参数进行约束。rem

【例】建立表名为 cards 的数据表,并在该表的 name 字段上创建全文索引,SQL 语句以下:get

create  table cards(
    id int(11)  auto_increment  primary key  not  null,
    name  varchar(50),
    number  bigint(11),
    info  varchar(50),
    FULLTEXT  KEY  cards_number(name)
);

此时在name字段上创建的全文索引,索引名字为cards_number,索引方法为空(没有),索引类型为FULL TEXT

建立多列索引

建立多列索引即指定表的多个字段便可实现。io

【例】建立名称为 information 的数据表,并指定 name 和 sex 为 多列索引,SQL 语句以下:table

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)
);

此时在name,sex字段上创建的普通联合索引,索引名字为info,索引方法为BTREE,索引类型为normal

建立空间索引(在MyISAM上)

建立空间索引时,须要设置 SPATIAL 参数。一样,必须说明的是,只有 MyISAM 类型表支持该类型索引。并且,索引字段必须有非空约束。form

【例】建立一个名称为 list 的数据表,并建立一个名为 listinfo 的空间索引,SQL语句以下:

create  table  list(
    id  int(11)  primary  key  auto_increment  not null,
    goods  geometry  not  null,
    SPATIAL  INDEX  listinfo(goods)
)engine=MyISAM;

goods  字段上已经创建名称为  listinfo 的空间索引,其中  goods  字段必须不能为空,且数据类型是  GEOMETRY,该类型是空间数据类型。空间类型不能用其余类型代替,不然在生成空间素引时会产生错误且不能正常建立该类型索引。

    空间类型除了上述示例中提到的 GEOMETRY 类型外,还包括如  POINT、LINESTRING、POLYGON  等类型,这些空间教据类型在日常的操做中不多被用到。

参考

原文连接:http://www.javashuo.com/article/p-pftfjedg-da.html

相关文章
相关标签/搜索