mysql创建索引
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了mysql创建索引,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含4122字,纯文字阅读大概需要6分钟。
内容图文
![mysql创建索引](/upload/InfoBanner/zyjiaocheng/875/bcb803c3be6f407e822940a241ca31d6.jpg)
1.创建普通索引
创建一个普通索引时,不需要加任何UNIQUE、FULLTEXT或者SPATIAL参数。
下面创建一个表名为index1的表,在表中的id字段上建立索引。SQL代码如下:
CREATE TABLE index1 (id INT , name VARCHAR(20) , sex BOOLEAN , INDEX ( id) );
运行结果显示创建成功,使用SHOW CREATE TABLE语句查看表的结构。显示如下:
mysql> SHOW CREATE TABLE index1 \G *************************** 1. row *************************** Table: index1 Create Table: CREATE TABLE `index1` ( `id` int(11) DEFAULT NULL, `name` varchar(20) DEFAULT NULL, `sex` tinyint(1) DEFAULT NULL, KEY `index1_id` (`id`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8 1 row in set (0.00 sec)
2.创建唯一性索引
创建唯一性索引时,需要使用UNIQUE参数进行约束。
下面创建一个表名为index2的表,在表中的id字段上建立名为index2_id的唯一性索引,且以升序的形式排列。SQL代码如下:
CREATE TABLE index2 (id INT UNIQUE , name VARCHAR(20) , UNIQUE INDEX index2_id ( id ASC) );
运行结果显示创建成功,使用SHOW CREATE TABLE语句查看表的结构。显示如下:
mysql> SHOW CREATE TABLE index2 \G *************************** 1. row *************************** Table: index2 Create Table: CREATE TABLE `index2` ( `id` int(11) DEFAULT NULL, `name` varchar(20) DEFAULT NULL, UNIQUE KEY `id` (`id`), UNIQUE KEY `index2_id` (`id`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8 1 row in set (0.00 sec)
结果可以看到,id字段上已经建立了一个名为index2_id的唯一性索引。这里的id字段可以没有进行唯一性约束,也可以在该字段上成功创建唯一性索引。但是,这样可能达不到提高查询速度的目的。
3.创建全文索引
全文索引只能创建在CHAR、VARCHAR或TEXT类型的字段上。而且,现在只有MyISAM存储引擎支持全文索引。
下面创建一个表名为index3的表,在表中的info字段上建立名为index3_ info的全文索引。SQL代码如下:
CREATE TABLE index3 (id INT , info VARCHAR(20) , FULLTEXT INDEX index3_info ( info ) )ENGINE=MyISAM;
运行结果显示创建成功,使用SHOW CREATE TABLE语句查看表的结构。显示如下:
mysql> SHOW CREATE TABLE index3 \G *************************** 1. row *************************** Table: index3 Create Table: CREATE TABLE `index3` ( `id` int(11) DEFAULT NULL, `info` varchar(20) DEFAULT NULL, FULLTEXT KEY `index3_info` (`info`) ) ENGINE=MyISAM DEFAULT CHARSET=utf8 1 row in set (0.00 sec)
结果可以看到,info字段上已经建立了一个名为index3_info的全文索引。如果表的存储引擎不是MyISAM存储引擎,系统会提示"ERROR 1214 (HY000): The used table type doesn't support FULLTEXT indexes"。
注意:目前只有MyISAM存储引擎支持全文索引,InnoDB存储引擎还不支持全文索引。因此,在创建全文索引时一定注意表的存储引擎的类型。对于经常需要索引的字符串、文字数据等信息,可以考虑存储到MyISAM存储引擎的表中。
4.创建单列索引
单列索引是在表的单个字段上创建索引。
下面创建一个表名为index4的表,在表中的subject字段上建立名为index4_st的单列索引。SQL代码如下:
CREATE TABLE index4 (id INT , subject VARCHAR(30) , INDEX index4_st ( subject(10) ) );
运行结果显示创建成功,使用SHOW CREATE TABLE语句查看表的结构。显示如下:
mysql> SHOW CREATE TABLE index4 \G *************************** 1. row *************************** Table: index4 Create Table: CREATE TABLE `index4` ( `id` int(11) DEFAULT NULL, `subject` varchar(30) DEFAULT NULL, KEY `index4_st` (`subject`(10)) ) ENGINE=InnoDB DEFAULT CHARSET=utf8 1 row in set (0.00 sec)
结果可以看到,subject字段上已经建立了一个名为index4_st的单列索引。细心的读者可能会发现,subject字段长度为20,而index4_st索引的长度只有10。这样做的目的还是为了提高查询速度。对于字符型的数据,可以不用查询全部信息,而只查询其前面的若干字符信息。
5.创建多列索引
创建多列索引是在表的多个字段上创建一个索引。
下面创建一个表名为index5的表,在表中的name和sex字段上建立名为index5_ns的多列索引。SQL代码如下:
CREATE TABLE index5 (id INT , name VARCHAR(20) , sex CHAR(4) , INDEX index5_ns ( name, sex ) );
运行结果显示创建成功,使用SHOW CREATE TABLE语句查看表的结构。显示如下:
mysql> SHOW CREATE TABLE index5 \G *************************** 1. row *************************** Table: index5 Create Table: CREATE TABLE `index5` ( `id` int(11) DEFAULT NULL, `name` varchar(20) DEFAULT NULL, `sex` char(4) DEFAULT NULL, KEY `index5_ns` (`name`,`sex`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8 1 row in set (0.00 sec)
内容总结
以上是互联网集市为您收集整理的mysql创建索引全部内容,希望文章能够帮你解决mysql创建索引所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。