8.2 创建索引
8.2.1. 创建表的时候创建索引
基础语法:
CREATE TABLE 表名 [列名 属性]
[UNIQUE|FULLTEXT|SPATIAL] [INDEX|KEY] [索引名] (列名[索引长度]) [ASC|DESC]备注:[UNIQUE|FULLTEXT|SPATIAL] 可选参数,表示唯一索引,全文索引和空间索引;
[INDEX|KEY] 两者作用相同,用来创建索引;
[ASC|DESC] 用于指定升序还是降序的索引值存储
创建普通索引
CREATE TABLE test ( id int(8) not null, name VARCHAR(50) not null, author VARCHAR(50) not null, num VARCHAR(50) not null, INDEX(num) );创建唯一索引
CREATE TABLE test ( id int(8) not null, name VARCHAR(50) not null, author VARCHAR(50) not null, num VARCHAR(50) not null, UNIQUE INDEX UniqIndex(id) );创建单列索引
CREATE TABLE test ( id int(8) not null, name VARCHAR(50) not null, author VARCHAR(50) not null, num VARCHAR(50) not null, INDEX SingleIdx(name(50)) );创建组合索引
CREATE TABLE test ( id int(8) not null, name VARCHAR(50) not null, author VARCHAR(50) not null, num VARCHAR(50) not null, INDEX MultiIdx(id, name, num(50)) );注意:索引使用的规则是最左前缀,强行按照sql中的顺序进行存放,查询时候只能用id、id 和name, 全都有的三种方式去查询使用,否则不生效
创建全文索引
CREATE TABLE test ( id int(8) not null, name VARCHAR(50) not null, author VARCHAR(50) not null, num VARCHAR(50) not null, FULLTEXT INDEX FullTestIdx(name(50)) ) ENGINE = MyISAM;注意:因为mysql默认引擎是InnoDB,所以要在这里声明
创建空间索引
CREATE TABLE test ( id int(8) not null, name VARCHAR(50) not null, author VARCHAR(50) not null, num VARCHAR(50) not null, SPATIAL INDEX FullTestIdx(name) ) ENGINE = MyISAM;注意:索引字段的非空要求,存储引擎的变更
8.2.2 在已存在的表上创建索引
使用ALTER TABLE或CREATE TABLE语句在表上添加索引
使用
ALTER TABLE语句创建索引创建普通索引
创建唯一索引
创建单列索引
创建组合索引
创建默认全文索引
注意:表需要时MyISAM存储引擎
创建空间索引
注意:表需要时MyISAM存储引擎,对应字段非空限制
使用
CREATE INDEX创建索引基础语法:
创建普通索引
创建唯一索引
创建单列索引
创建组合索引
创建默认全文索引
注意:表需要时MyISAM存储引擎
创建空间索引
注意:表需要时MyISAM存储引擎,对应字段非空限制
最后更新于
这有帮助吗?