MySQL中的键,主键,唯一键和索引之间的区别

什么时候应该使用KEYPRIMARY KEYUNIQUE KEYINDEX

KEYINDEX是MySQL中的同义词。 他们的意思是一样的。 在数据库中,您可以使用索引来提高数据检索的速度。 通常在JOINWHEREORDER BY子句中使用的列上创build索引。

想象一下,你有一个叫做“ users的表格,你想要search所有具有姓氏“史密斯”的用户。 如果没有索引,数据库将不得不遍历表中的所有logging:这是很慢的,因为数据库中的logging越多,查找结果的工作就越多。 另一方面,索引将帮助数据库快速跳到“史密斯”logging的相关页面。 这与我们人类如何通过电话簿目录来查找姓氏的方式非常相似:我们不通过从封面到封面的目录开始search,只要我们按照某种顺序插入信息即可用来跳转到“S”页面。

主键和唯一键是相似的。 主键是可以唯一标识行的列或列的组合。 这是一个独特的关键的特殊情况。 一个表最多只能有一个主键,但多于一个唯一键。 在列上指定唯一键时,表中的两个不同的行可以具有相同的值。

还要注意,定义为主键或唯一键的列在MySQL中被自动编入索引。

KEY和INDEX是同义词。

当性能测量结果和EXPLAIN显示由于缺less索引而导致查询效率低下时,应该添加索引。 添加索引可以提高查询的性能(但可以减慢对表的修改)。

如果要将该列(或多列)中的值限制为唯一的,则应该使用UNIQUE,以便插入重复值的尝试会导致错误。

PRIMARY KEY既是一个唯一的约束,也意味着该列不是NULL。 它被用来给每一行的身份。 这对于通过外键约束连接另一个表可能很有用。 虽然表格不需要有PRIMARY KEY,但这通常是一个好主意。

主键不允许空值,但唯一键允许空值。

我们可以在一个表中只声明一个主键,但是一个表可以有多个唯一的键(列分配)。

PRIMARY KEYUNIQUE KEY是相似的,除了它有不同的function。 主键使得表格行是唯一的(即不能有2行具有完全相同的关键字)。 数据库表中只能有1个主键。

唯一键使得表格行中的表格列是唯一的(即,没有2个表格行可能具有相同的确切值)。 您可以拥有多个唯一的键列表列(与主键不同,这意味着表中只有一个表列是唯一的)。

INDEX也创造独特性。 MySQL(示例)将为索引的列创build一个索引表。 这样一来,在索引表列上查询查询时,就可以更容易地检索表格行值。 缺点是如果你做了很多的更新/删除/创build,MySQL必须pipe理索引表(这可能是一个性能瓶颈)。

希望这可以帮助。

唯一键:没有两行相似的列

主键:可以唯一标识表中每一行的最小列数的集合(即,在构成主键的所有列中没有两行相似)。 表中可以有多个主键。 如果存在唯一键,则它是表中的主键(不是“主键”)。 如果不存在一个唯一的键值,则需要多个列值来标识像(first_name,last_name,father_name,mother_name)这样的行可以在某些表中构成主键。

索引:用于优化查询。 如果你要多次search或sorting某些列的结果(例如,大多数人会按名称search学生,而不是按照他们的卷号search),那么如果列值都是“索引“例如二叉树algorithm。

主键和唯一键都用于强制执行一列的唯一性。 那么,你什么时候select一个呢?

一张表只能有一个主键。 如果你想在2列或更多列上执行唯一性,那么我们使用唯一的键约束。

主键约束和唯一键约束之间的区别?

1.表格只能有一个主键,但有多个唯一键

2.主键不允许为空,其中唯一的键允许为空

主键 – 我们只能将一个主键放在一个表中,当我们将值input到表中时,不能将该列留空。

唯一键 – 我们可以将多个唯一的键放在一个表上,当我们将值input到表中时,可能会将该列留空。 列应用唯一的值(不一样),当我们应用主键和唯一键。

主键用于处理不同的表。 这是关系数据库的基础。 如果你有一个图书数据库,最好创build2个表 – 1)书籍和2)作者与INT主键“ID”。 然后你在书中使用id而不是作者的名字。

如果您不想重复input,则使用唯一的密钥。 例如,您可能在书籍表中有标题,并且要确保每个标题只有一个条目。

独特的关键:

  1. 多个值可以为null。
  2. 没有两个元组可以在唯一键中具有相同的值。
  3. 一个或多个唯一的键可以组合成一个主键,但反之亦然。

首要的关键

  1. 可以包含多个唯一的键。
  2. 唯一表示一个元组。