您的位置:首页 > 数据库

关系数据库中主键与唯一索引的区别

2015-03-20 15:12 281 查看
两者在可空、唯一性、排序等表面特征上并没有什么区别,而且主键都有唯一索引,所以常被人问起它们之间有什么区别。简要地说,主键和唯一索引,或者键和索引之间的最主要区别在于:
键是一个逻辑层面的概念,涉及到数据模式的设计。从语法角度看,键被定义为一种约束。比方说,如果想定义外键(或称参考约束),那么相关列就必须先定义为“键”。键在实现上一般都会有自己的索引(主键则是有唯一索引),这个索引可能是用户显式定义的索引,或是DBMS隐式定义的索引。在具体的DBMS实现中,主键还可能会有其它特殊处理。比如在MySQL InnoDB中,表数据在文件(表空间中)中是按主键顺序存储的,所以主键的选择有特殊的讲究,不能仅将其作为一个普通的唯一索引看待。
索引是一个物理层面的概念,涉及到数据处理的具体实现。比方说,如果想加快某些查询的速度,就需要在相关列上定义合适的索引。键列必有索引,但索引列未必是键。不是键的索引列是不能用在外键定义中的。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: