MySQL学习总结(三)索引

补充一下,上一章节中约束的一点东西。我们在为约束设置名称的时候(标识符)推荐写法“约束缩写_字段名”,这样让人看起来就会很清晰。例如:FK_Deptno,我们通过索引的名字就可以大概知道这是一个设置的关于Deptno字段的外键。

一个索引包含表中按照一定顺序排序的一列或者多列字段。创建索引主要是为了提高从表中检索数据的速度。但是创建索引有利也有弊,优点是通过索引,可以提高查询的速度。但是过多的创建索引会占据许多的磁盘空间,因此在创建索引的时候一定要权衡利弊。

以下情况适合创建索引:

(1)经常被查询的字段

(2)经常出现在分组中的字段

(3)表的主键或者是外键字段

(4)设置唯一完整性约束的字段

以下情况不适合创建索引:

(1)在查询中很少被使用的字段

(2)拥有许多重复的值的字段

索引名在设置的时候,建议“index_字段名”,这样看起来很清晰。

索引根据创建方式又可以分为两类,自动索引和手动索引。通过名称我们可以简单的理解,自动索引就是自动创建的索引(和废话一样。。),在设置表的主键或者其他设置完整性约束的时候,MySQL系统会自动创建索引。而手动索引,指的是我们主动在表上创建的索引,如下图所示:

QQ截图20160526112526

1、创建索引

1.1 、创建普通索引

CREATE TABLE table_name(

        属性名 数据类型,

        属性名 数据类型,

       …

        INDEX 索引名(属性名1)

)

1.2、在已经存在的表上创建普通索引

CREATE INDEX 索引名 ON 表名 (属性名)

1.3、ALTER TABLE创建普通索引

ALTER TABLE table_name ADD INDEX 索引名 (属性名)

2、创建唯一索引

唯一索引,就是在创建索引的时候,限制索引值必须是唯一值,通过该类型的索引可以更快的查询某条记录。

2.1 、创建表时创建唯一索引

CREATE TABLE table_name(

        属性名 数据类型,

        属性名 数据类型,

       …

       UNIQUE  INDEX 索引名(属性名1)

)

2.2、在已经存在的表上创建唯一索引

CREATE UNIQUE   INDEX 索引名 ON 表名 (属性名)

2.3、ALTER TABLE创建唯一索引

ALTER TABLE table_name ADD UNIQUE    INDEX 索引名 (属性名)

注意:创建唯一索引的时候,如果表中该字段有为空值的时候,则唯一索引会创建失败。

3、创建全文索引

全文索引主要关联在数据库中数据类型为CHAR、VARCHAR、TEXT的字段上,以便能够更加快速的查询数据量较大的字符串类型的字段。

3.1 、创建表时创建全文索引

CREATE TABLE table_name(

        属性名 数据类型,

        属性名 数据类型,

       …

       FULLTEXT INDEX 索引名(属性名1)

)

3.2、在已经存在的表上创建全文索引

CREATE FULLTEXT INDEX 索引名 ON 表名 (属性名)

3.3、ALTER TABLE创建全文索引

ALTER TABLE table_name ADD FULLTEXT INDEX 索引名 (属性名)

4、通过SQLyog创建索引

右键要创建索引的表,选择改变表菜单,点击“2个索引”,如下图所示:

QQ截图20160526130700

通过SQLyog软件,我们可以更加方便快捷的创建索引。而且界面也很简单,易上手。

5、删除索引

SQL语法:DROP INDEX index_name ON table_name;

通过SQLyog软件,在表——>索引,点击节点前面的加号,选中要删除的索引,右键选择“删除索引”,根据提示选择是,成功删除,如图:

QQ截图20160526131107

 

或在改变表的索引列下删除,上面已经介绍过。

原文地址:https://www.cnblogs.com/woshikh/p/5530739.html