关系数据库中主键与唯一索引的区别
2015-03-20 15:12
281 查看
两者在可空、唯一性、排序等表面特征上并没有什么区别,而且主键都有唯一索引,所以常被人问起它们之间有什么区别。简要地说,主键和唯一索引,或者键和索引之间的最主要区别在于:
键是一个逻辑层面的概念,涉及到数据模式的设计。从语法角度看,键被定义为一种约束。比方说,如果想定义外键(或称参考约束),那么相关列就必须先定义为“键”。键在实现上一般都会有自己的索引(主键则是有唯一索引),这个索引可能是用户显式定义的索引,或是DBMS隐式定义的索引。在具体的DBMS实现中,主键还可能会有其它特殊处理。比如在MySQL InnoDB中,表数据在文件(表空间中)中是按主键顺序存储的,所以主键的选择有特殊的讲究,不能仅将其作为一个普通的唯一索引看待。
索引是一个物理层面的概念,涉及到数据处理的具体实现。比方说,如果想加快某些查询的速度,就需要在相关列上定义合适的索引。键列必有索引,但索引列未必是键。不是键的索引列是不能用在外键定义中的。
键是一个逻辑层面的概念,涉及到数据模式的设计。从语法角度看,键被定义为一种约束。比方说,如果想定义外键(或称参考约束),那么相关列就必须先定义为“键”。键在实现上一般都会有自己的索引(主键则是有唯一索引),这个索引可能是用户显式定义的索引,或是DBMS隐式定义的索引。在具体的DBMS实现中,主键还可能会有其它特殊处理。比如在MySQL InnoDB中,表数据在文件(表空间中)中是按主键顺序存储的,所以主键的选择有特殊的讲究,不能仅将其作为一个普通的唯一索引看待。
索引是一个物理层面的概念,涉及到数据处理的具体实现。比方说,如果想加快某些查询的速度,就需要在相关列上定义合适的索引。键列必有索引,但索引列未必是键。不是键的索引列是不能用在外键定义中的。
相关文章推荐
- 简单描述mysql中,索引,主键,唯一索引,联合索引的区别,对数据库的性能有什么影响(从读写两个方面)(新浪)
- 简单描述mysql中,索引,主键,唯一索引,联合索引的区别,对数据库的性能有什么影响。从读写两方面分析
- 主键和唯一索引的区别
- 主键、唯一键与唯一索引的区别
- 数据库的几个概念:主键,外键,索引,唯一索引
- 主键和唯一索引的区别(转)
- 数据库的几个概念:主键,外键,索引,唯一索引
- 主键和唯一索引的区别
- 主键和唯一索引的区别
- 主键和唯一索引的区别
- 数据库的几个概念:主键,外键,索引,唯一索引
- 主键与唯一索引的区别
- ORACLE中主键约束跟唯一索引的区别
- 主键、唯一键与唯一索引的区别
- 数据库的几个概念:主键,外键,索引,唯一索引
- 主键与唯一索引的区别(收藏)
- 主键与唯一索引的区别
- Oracle主键约束、唯一键约束、唯一索引的区别
- Oracle主键约束、唯一键约束、唯一索引的区别
- 数据库 主键与索引键的区别