MySQL数据库索引的基础操作

来源:互联网 发布:plc编程梯形图实例 编辑:程序博客网 时间:2024/05/16 23:51

数据库对象索引是一种有效组合数据的方式。通过索引对象,可以快速查询到数据库对象表中的特定记录,是一种提高性能的常用方式。

MySQL为我们提供了6种索引,他们分别是 普通索引、唯一索引、全文索引、单列索引、多列索引和空间索引。下面我们把普通索引、唯一索引、全文索引和多列索引的多种创建方式 都简单说一下:

一、普通索引

简单说一下普通索引是什么意思,就是在创建索引时,不附加任何限制条件(唯一、非空等限制)。该类型的索引可以创建在任何数据类型的字段上。

1、在创建表时创建普通索引。其语法形式如下:

CREATE TABLE table_name(属性名 数据类型属性名 数据类型......属性名 数据类型INDEX|KEY 【索引名】(属性名1 【(长度)】 【ASC|DESC】));
在上述语句中 table_name 是表的名字,“属性名”是表中每一列的名字,这里面的 INDEX 或 KEY 是用来指定字段的索引的,“索引名”参数用来指定所创建索引的名字,“属性名1”参数是用来指定索引所关联的字段名称。“长度”参数是用来指定索引的长度,“ASC”参数用来指定为上升排序,“DESC”参数用来指定为降序排列。

2、在已经存在的表上创建索引。其语法形式如下:

CREATE INDEX 索引名ON 表名(属性名【(长度)】 【ASC|DESC】)
在上述语句中 ,“ON”关键字用来指定所要创建索引的表名称。至于其他的内容和上面的一样。

3、通过SQL语句ALTER TABLE 创建普通索引。其语法形式如下:

ALTER TABLE table_nameADD INDEX|KEY 索引名(属性名 【(长度)】 【ASC|DESC】)
在上述语句中,好像也没什么说的,内容和上面的一样,只是形式发生了变化。

二、唯一索引

所谓唯一索引就是在创建索引时,限制索引的值必须是唯一的。在MYSQL中创建索引的方式有两种形式,可以分为自动索引手动索引。从字面意思上我们就可以理解,所谓自动索引,就是系统自动创建索引。所谓手动索引就是手动在表上创建索引。这里你可能会想那他在什么时候会自动创建索引呢?其实在表设置某个字段为主键或唯一约束的时候,系统就会自动创建索引。

1、创建表时创建唯一索引,语法形式如下:

CREATE TABLE table_name(属性名 数据类型属性名 数据类型......属性名 数据类型UNIQUE INDEX|KEY 【索引名】(属性名1 【(长度)】 【ASC|DESC】));
在上述语句中,除了比创建普通索引多了关键字UNIQUE外,其他的都是一样的。

2、在已存在的表上创建唯一索引,其语法形式如下:

CREATE UNIQUE INDEX 索引名ON 表名(属性名【(长度)】 【ASC|DESC】)
在上述语法中,就在 创建  普通索引语法形式  的INDEX 的前面加了一个 UNIQUE关键字。

3、通过SQL语句ALTER TABLE 创建唯一索引。其语法形式如下:

ALTER TABLE table_nameADD UNIQUE INDEX|KEY 索引名(属性名 【(长度)】 【ASC|DESC】)
写到这里想必你们已经找到创建其他索引的规律了,就是在INDEX的前面加上一些关键字来限制一下。我们再看一下全文索引。

三、全文索引

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

注意MYSQL只能在储存引擎为MyISAM的数据库表上创建全文索引

全文索引的关键字是FULLTEXT ,它的语法形式就是把上面唯一索引语法形式的 UNIQUE替换成 FULLTEXT,就成了全文索引的语法形式,我这里就不写了。

四、多列索引

所谓多列索引就是指创建索引时,所关联的字段不是一个字段,而是多个字段。

1、在创建表时创建多列索引,语法形式如下:

CREATE TABLE table_name(属性名 数据类型属性名 数据类型......属性名 数据类型INDEX|KEY 【索引名】(属性名1 【(长度)】 【ASC|DESC】,                     属性名2 【(长度)】 【ASC|DESC】,                     ...                     属性名n 【(长度)】 【ASC|DESC】));
在上述语句中,里面的内容和上面的一样,就是多了几个属性,每个属性之间用“,”号隔开。所关联的字段至少大一一个字段。

2、在已经存在的表上创建多列索引。其语法形式如下:

CREATE INDEX 索引名ON 表名(属性名1 【(长度)】 【ASC|DESC】,        属性名2 【(长度)】 【ASC|DESC】,        ...        属性名n 【(长度)】 【ASC|DESC】)
3、通过SQL语句创建ALTER TABLE 创建多列索引。其语法形式如下:

ALTER TABLE table_nameADD INDEX|KEY 索引名(属性名1 【(长度)】 【ASC|DESC】,                     ...                     属性名n 【(长度)】 【ASC|DESC】)


讲了这么多创建索引的语法形式,想必大家已经记住了其中一种或者多种创建办法,那么如果我们不想用索引是不是可以把它删除呢,如果能,应该怎么删除呢?其实很简单。语法形式如下:

DROP INDEX index_nameON table_name
就是这么简单,简单的要命,其中index_name 参数表示你想要删除索引的名字,table_name参数表示所要删除索引所在的表对象。


好了索引的一些简单语法已经简单说完了,下面和大家说一下我们在什么时候该创建索引什么时候不该创建索引。

以下情况适合创建索引:

1、经常被查询的字段,即在WHERE子句中出现的字段。

2、在分组的字段,即在GROUP BY 子句中出现的字段。

3、存在依赖关系的子表和父表之间的联合查询,即主键或外键字段。

4、设置唯一完整性约束的字段。

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

1、在查询中很少被使用的字段。

2、拥有许多重复的字段。


好了就这些。












原创粉丝点击