数据库对象索引与书的目录类似,主要是为了提高从表中检索数据的速度。由于数据存储在数据库表中,所以索引是创建在数据库表对象上的,由表中的一个字段或多个字段生成的键组成,这些键存储在数据结构中,通过MySQL可以快速有效地查找与键值相关联的字段。
根据索引的存储类型,可以将索引分为B型树索引和哈希索引。
InnoDB和MyISAM存储引擎支持BTREE类型索引,MEMORY存储引擎支持HASH类型索引。
MySQL支持6种索引,它们分别为普通索引、唯一索引、全文索引、单列索引、多列索引和空间索引。
1.创建和查看索引
所谓创建索引,就是在表的一个字段或多个字段上建立索引,在MySQL中,可以通过三种方式来创建索引,分别为
创建表时创建索引、在已经存在的表上创建索引和通过SQL语句ALTER TABLE创建索引。
普通索引---就是在创建索引时,不附加任何限制条件(唯一、非空等限制)。该类型的索引可以创建在任何数据类型的字段上。
创建表时创建普通索引
MySQL所支持的存储引擎对每个表至少支持16个索引,总索引长度至少为256字节。
SQL命令如下:
可以看到在数据库表t_index上创建了一个名为index_deptno的索引,其所关联的字段是deptno。
为了校验数据库表t_index中索引是否被使用,执行SQL语句EXPLAIN,
执行结果显示,由于possible_keys和key字段处的值都为所创建的索引名index_deptno,说明该索引已经存在,而且已经开始启用。
在已经存在的表上创建普通索引
SQL命令: CREATE INDEX 索引名 ON 表名(属性名 【(长度)】【ASC|DESC】)
通过SQL语句 ALTER TABLE创建普通索引
SQL命令: ALTER TABLE table_name
ADD INDEX|KEY 索引名 (属性名 【(长度)】【ASC|DESC】)
2.创建和查看唯一索引
所谓唯一索引,就是在创建索引时,限制索引的值必须是唯一的。
创建表时创建唯一索引
SQL命令: UNIQUE INDEX命令
在已经存在的表上创建唯一索引
通过ALTER TABLE语句创建唯一索引