MySQL学习总结(三)索引
补充一下,上一章节中约束的一点东西。我们在为约束设置名称的时候(标识符)推荐写法“约束缩写_字段名”,这样让人看起来就会很清晰。例如:FK_Deptno,我们通过索引的名字就可以大概知道这是一个设置的关于Deptno字段的外键。
一个索引包含表中按照一定顺序排序的一列或者多列字段。创建索引主要是为了提高从表中检索数据的速度。但是创建索引有利也有弊,优点是通过索引,可以提高查询的速度。但是过多的创建索引会占据许多的磁盘空间,因此在创建索引的时候一定要权衡利弊。
以下情况适合创建索引:
(1)经常被查询的字段
(2)经常出现在分组中的字段
(3)表的主键或者是外键字段
(4)设置唯一完整性约束的字段
以下情况不适合创建索引:
(1)在查询中很少被使用的字段
(2)拥有许多重复的值的字段
索引名在设置的时候,建议“index_字段名”,这样看起来很清晰。
索引根据创建方式又可以分为两类,自动索引和手动索引。通过名称我们可以简单的理解,自动索引就是自动创建的索引(和废话一样。。),在设置表的主键或者其他设置完整性约束的时候,MySQL系统会自动创建索引。而手动索引,指的是我们主动在表上创建的索引,如下图所示:
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个索引”,如下图所示:
通过SQLyog软件,我们可以更加方便快捷的创建索引。而且界面也很简单,易上手。
5、删除索引
SQL语法:DROP INDEX index_name ON table_name;
通过SQLyog软件,在表——>索引,点击节点前面的加号,选中要删除的索引,右键选择“删除索引”,根据提示选择是,成功删除,如图:
或在改变表的索引列下删除,上面已经介绍过。