一、mysql 索引类型
1、普通索引(Basic Index/Non-Unique Index)
普通索引是最基本的索引类型,他没有任何字段值唯一性的限制。
创建普通索引的目的是为了加速数据检索的速度。
CREATE INDEX '索引名' ON '表名'('字段名');
2.唯一索引(Unique Index)
唯一索引要求索引列的所有值都必须是唯一(允许有空值NULL)。
一个表可以有多个或者一个索引,并且通常用于主键之外需要唯一约束的列。
CREATE UNIQUE INDEX '索引名' ON '表名'('字段名');
3.主键索引(Primary Key Index)
主键索引是一种特殊的唯一索引,它是表的主键列上的索引。
每个表只能有一个主键索引,且必须是唯一值并且不允许为NULL。
当创建表时指定主键,MYSQL会自动创建此主键索引。
CREATE TABLE table_name (
id INT PRIMARY KEY,
...
);
4.组合索引(Composite Index/Multi-Column Index)
组合索引是指在一个索引中包含两个或更多列的索引。
这种索引可以按照多个列进行排序,并且在查询条件中使用这些列的特定顺序时能提高效率。
CREATE INDEX '索引名' ON '表名'('字段名1', '字段名2', ...);
一、索引的利弊
1、索引的好处
- a、提高数据检索的效率,降低检索过程中必须要读取得数据量,降低数据库IO成本。
- b、降低数据库的排序成本。因为索引就是对字段数据进行排序后存储的,如果待排序的字段与索引键字段一致,就在取出数据后不用再次排序了,因为通过索引取得的数据已满足排序要求。另外,分组操作是先排序后分组,所以索引同样可以省略分组的排序操作,降低内存与CPU资源的消耗。
2、索引的弊端
- a、索引会增加 增、删、改操作所带来的IO量与调整索引的计算量。
- b、索引要占用空间,随着数据量的不断增大,索引还会带来存储空间的消耗。
二、判断是否应该建索引的条件
- 较频繁的作为查询条件的字段应该要创建索引
- 唯一性太差的字段不适合单独创建索引,即使频繁作为查询条件
- 增、删、改操作较多的数据库字段不适合建索引