索引
索引
1.什么是索引
索引是一种有效组合数据的方式,可以快速查找到指定的记录,类似与书籍中目录。
2.索引的作用
1) 大大提高数据库的检索速度。
2) 改善数据库的性能。
3.索引分类
索引的存储类型可以分为B-树索引(BTREE)和哈希表(HASH)。InnoDB和MyISAM存储引擎支持B-树索引。
1) 普通索引;最基本索引类型,允许在定义索引的列中插入重复值和空值。它的唯一任务时加快对数据库的访问速度。因此,应该只为最常出现的查询条件(WHERE)或排序条件(ORDER BY)中数据列创建索引。
2) 唯一索引;唯一索引不允许两行具有相同的索引值,允许有一个空值。
若是创建了唯一约束,则将自动创建唯一索引。尽管唯一索引有助于找到信息,但是为了获得最佳的性能,仍建议使用主键约束。
3) 主键索引;主键索引要求主键中的每个值都是非空的,唯一的,它允许快速访问数据。
在数据关系图中为表定义一个主键将自动创建主键索引,主键索引是唯一索引的特殊类型。
4) 复合索引;将多个列合并作为索引,这种索引称为复合索引。
需要注意的是:只有在查询中使用了复合索引最左边的字段时,索引才会被使用,即第一个字段作为前缀的集合。
5) 全文索引;全文索引的作用是支持值的查找,允许出现空值和重复值。全文索引可以在CHAR,VARCHAR或者TEXT类型的列上创建,全文索引的效率大大高于”LIKE”关键字。MySQL5.5中只有MyISAM存储引擎支持全文索引。
6) 空间索引;空间索引是对空间数据类型的列建立的索引,如GEOMETRY,POINT等,创建空间索引列必须将其声明为NOT NULL, MySQL5.5中只有MyISAM存储引擎支持空间索引。
4.创建索引
语法:
CREATE [UNIQUE | FULLTEXT | SPATIAL] INDEX index_name
ON table_name (column_name[length]…………..);
其中:UNIQUE 表示唯一索引,FULLTEXT 表示全文索引, SPATIAL表示空间索引,为可选参数。
Index_name表示索引名;
Table_name表示创建索引的表名;
Column_name指定需要创建索引的列;
Length指定索引的长度,可选参数,只有字符串类型才能指定索引的长度。
5.删除索引
语法:
DROP INDEX index_name ON table_name;
查看索引
语法:
SHOW INDEX FROM table_name;
使用索引的原则
因为索引自身也需要维护,并占用一定的资源,因此没有必要为每个列都添加索引,如下条件可添加索引;
1) 频繁搜索的列
2) 经常用作查询的列
3) 经常排序,分组的列
4) 经常用作连接的列(主键、外键)
请不要给下面的列创建索引:
-
仅包含几个不同值的列
-
包中仅包含几行

浙公网安备 33010602011771号