全部博文(471)
分类: Mysql/postgreSQL
2012-03-18 21:30:10
创建表的时候创建索引(1)
创建表时可以直接创建索引,这种方式最简单、方便。其基本形式如下:
1 CREATE TABLE 表名 ( 属性名 数据类型 [完整性约束条件],
2 属性名 数据类型 [完整性约束条件],
3 ......
4 属性名 数据类型
5 [ UNIQUE | FULLTEXT | SPATIAL ] INDEX | KEY
6 [ 别名 ] ( 属性名1 [(长度)] [ ASC | DESC] )
7 );
其中,UNIQUE是可选参数,表示索引为唯一性索引;FULLTEXT是可选参数,表示索引为全文索引;SPATIAL也是可选参数,表示索引为空间索引;INDEX和KEY参数用来指定字段为索引的,两者选择其中之一就可以了,作用是一样的;"别名"是可选参数,用来给创建的索引取的新名称;"属性1"参数指定索引对应的字段的名称,该字段必须为前面定义好的字段;"长度"是可选参数,其指索引的长度,必须是字符串类型才可以使用;"ASC"和"DESC"都是可选参数,"ASC"参数表示升序排列,"DESC"参数表示降序排列。
如果表的存储引擎不是MyISAM存储引擎,系统会提示"ERROR 1214 (HY000): The used table type doesn't support FULLTEXT indexes"。
注意:目前只有MyISAM存储引擎支持全文索引,InnoDB存储引擎还不支持全文索引。因此,在创建全文索引时一定注意表的存储引擎的类型。对于经常需要索引的字符串、文字数据等信息,可以考虑存储到MyISAM存储引擎的表中。
在已经存在的表上创建索引
在已经存在的表中,可以直接为表上的一个或几个字段创建索引。基本形式如下:
1 CREATE [ UNIQUE | FULLTEXT | SPATIAL ] INDEX 索引名
2 ON 表名 (属性名 [ (长度) ] [ ASC | DESC] );
其中,UNIQUE是可选参数,表示索引为唯一性索引;FULLTEXT是可选参数,表示索引为全文索引;SPATIAL也是可选参数,表示索引为空间索引;"INDEX"参数用来指定字段为索引的;"索引名"参数是给创建的索引取的新名称;"表名"参数是指需要创建索引的表的名称,该表必须是已经存在的,如果不存在,需要先创建;"属性名"参数指定索引对应的字段的名称,该字段必须为前面定义好的字段;"长度"是可选参数,其指索引的长度,必须是字符串类型才可以使用;ASC和DESC都是可选参数,ASC参数表示升序排列,DESC参数表示降序排列。
CREATE UNIQUE INDEX course_index ON course(course_id) ;
删除user表上的index_user索引
执行DROP语句可以删除user表上的索引。代码执行结果如下:
1 mysql> DROP INDEX index_user ON user;