mysql给已经存在的表添加索引_在已经存在的表上创建索引

在已经存在的表中,可以直接为表上的一个或几个字段创建索引。基本形式如下:CREATE  [ UNIQUE | FULLTEXT | SPATIAL ]  INDEX  索引名

ON  表名  (属性名  [ (长度) ]  [  ASC | DESC] );

其中,UNIQUE是可选参数,表示索引为唯一性索引;FULLTEXT是可选参数,表示索引为全文索引;SPATIAL也是可选参数,表示索引为空间索引;"INDEX"参数用来指定字段为索引的;"索引名"参数是给创建的索引取的新名称;"表名"参数是指需要创建索引的表的名称,该表必须是已经存在的,如果不存在,需要先创建;"属性名"参数指定索引对应的字段的名称,该字段必须为前面定义好的字段;"长度"是可选参数,其指索引的长度,必须是字符串类型才可以使用;ASC和DESC都是可选参数,ASC参数表示升序排列,DESC参数表示降序排列。

1.创建普通索引

【示例7-7】 下面在example0表中的id字段上建立名为index7_id的索引。SQL代码如下:CREATE  INDEX  index7_id  ON  example0 ( id ) ;

在创建索引之前,先使用SHOW CREATE TABLE语句查看example0表的结构,显示如下:mysql>SHOW CREATE TABLE example0 \G

*************************** 1. row ***************************

Table: example0

Create Table: CREATE TABLE `example0` (

`id` int(11) DEFAULT NULL,

`name` varchar(20) DEFAULT NULL,

`sex` tinyint(1) DEFAULT NULL

)ENGINE=InnoDBDEFAULTCHARSET=utf8

1 row in set (0.08 sec)

查询结果显示,example0表还没有索引。下面使用CREATE INDEX语句创建索引。CREATE INDEX语句执行结果如下:mysql>CREATE  INDEX  index7_id  ON  example0 ( id ) ;

Query OK, 0 rows affected (0.06 sec)

Records: 0  Duplicates: 0  Warnings: 0

运行结果显示创建成功,使用SHOW CREATE TABLE语句查看表的结构。显示如下:mysql>SHOW CREATE TABLE example0 \G

*************************** 1. row **************************

Table: example0

Create Table: CREATE TABLE `example0` (

`id` int(11) DEFAULT NULL,

`name` varchar(20) DEFAULT NULL,

`sex` tinyint(1) DEFAULT NULL,

KEY `index7_id` (`id`)

)ENGINE=InnoDBDEFAULTCHARSET=utf8

1 row in set (0.00 sec)

结果可以看到,example0表中的id字段上已经创建了一个名为index7_id的索引。这表示使用CREATE INDEX语句成功的在example0表上创建了普通索引。

2.创建唯一性索引

【示例7-8】 下面在index8表中的course_id字段上建立名为index8_id的唯一性索引。SQL代码如下:

CREATE  UNIQUE  INDEX  index8_id  ON  index8( course_id ) ;

其中,index8_id为索引的名词;UNIQUE用来设置索引为唯一性索引;表index8中的course_id字段可以有唯一性约束,也可以没有唯一性约束。

3.创建全文索引

【示例7-9】 下面在index9表中的info字段上建立名为index9_info的全文索引。SQL代码如下:CREATE  FULLTEXT  INDEX  index9_info  ON  index9( info ) ;

其中,FULLTEXT用来设置索引为全文索引;表index9的存储引擎必须是MyISAM类型;info字段必须为CHAR、VARCHAR和TEXT等类型。

4.创建单列索引

【示例7-10】 下面在index10表中的address字段上建立名为index10_addr的单列索引。address字段的数据类型为VARCHAR(20),索引的数据类型为CHAR(4)。SQL代码如下:CREATE  INDEX  index10_addr  ON  index10( address(4) ) ;

这样,查询时可以只查询address字段的前4个字符,而不需要全部查询。

5.创建多列索引

【示例7-11】 下面在index11表中的name和address字段上建立名为index11_na的多列索引。SQL代码如下:CREATE  INDEX  index11_na  ON  index11( name, address ) ;

该索引创建好了以后,查询条件中必须有name字段才能使用索引。

6.创建空间索引

【示例7-12】 下面在index12表中的line字段上建立名为index12_line的多列索引。SQL代码如下:CREATE  SPATIAL  INDEX  index12_line  ON  index12( line ) ;

其中,SPATIAL用来设置索引为空间索引;表index12的存储引擎必须是MyISAM类型;line字段必须为空间数据类型,而且是非空的。

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值