为什么用索引可以使查询变快?
主键索引和唯一索引的区别?
主键索引是唯一索引的特殊类型。
数据库表通常有一列或列组合,其值用来唯一标识表中的每一行。该列称为表的主键。
在数据库关系图中为表定义一个主键将自动创建主键索引,主键索引是唯一索引的特殊类型。主键索引要求主键中的每个值是唯一的。当在查询中使用主键索引时,它还允许快速访问数据。
它们的一些比较:
- 对于主键, oracle/sql server/mysql等都会自动建立唯一索引,并且主键也是一种约束;
- 主键不一定只包含一个字段,所以如果你在主键的其中一个字段建唯一索引还是必要的;
- 主键可作外键,唯一索引不可;
- 主键不可为空,唯一索引可;
- 主键也可是多个字段的组合;
- 主键与唯一索引不同的是:
- 有not null属性;
- 每个表只能有一个;
- 主键可以用作外键,唯一索引不可以。
唯一索引
不允许具有索引值相同的行,从而禁止重复的索引或键值。系统在创建该索引时检查是否有重复的键值,并在每次使用 INSERT 或 UPDATE 语句添加数据时进行检查。
创建唯一索引的目的不是为了提高访问速度,而只是为了避免数据出现重复。唯一索引可以有多个但索引列的值必须唯一,索引列的值允许有空值。如果能确定某个数据列将只包含彼此各不相同的值,在为这个数据列创建索引的时候就应该使用关键字UNIQUE,把它定义为一个唯一索引