【问题标题】:Primary,Unique and Index in Mysql [duplicate]Mysql中的主要,唯一和索引[重复]
【发布时间】:2014-01-09 01:20:55
【问题描述】:

谁能解释 Mysql 的 Primary、Unique 和 Index 键之间的区别。你能解释一下每个人在不同情况下的情况吗? ?

【问题讨论】:

  • 感谢您发布链接..

标签: mysql indexing


【解决方案1】:

Primary 是表中一列的值或表中多个列的值的组合,我们可以用它们来识别每一行。例如,让我们有一个表Customers,其中列有ID intFirstName varchar(50)LastName(50)。那么ID列可以用来标识用户,所以可以作为这个表的PK。如果存在的话,将只有一个客户,ID = 4ID = 10 等。

Unique 是表的列的值,对于每个单独的记录,该列的值应具有唯一值。

索引键是表的列或列的组合,可以使对表的查询执行得更快。当一个表有很多记录,甚至一个简单的查询需要很长时间才能完成时,它很有用。

【讨论】:

    【解决方案2】:

    是的,这些是不同的

    KEY 或 INDEX 指的是普通的非唯一索引。允许索引的非不同值,因此索引可能包含在索引的所有列中具有相同值的行。这些索引不会对您的数据施加任何限制,因此它们仅用于确保某些查询可以快速运行。

    UNIQUE 是指索引的所有行都必须唯一的索引。也就是说,对于该索引中的所有列,同一行可能不会与另一行具有相同的非 NULL 值。除了用于加快查询速度外,UNIQUE 索引还可用于对数据实施约束,因为数据库系统不允许在插入或更新数据时破坏这种不同的值规则。

    您的数据库系统可能允许将 UNIQUE 索引应用于允许 NULL 值的列,在这种情况下,如果两行都包含 NULL 值,则允许它们相同(这里的基本原理是 NULL 被认为不等于本身)。但是,根据您的应用程序,您可能会发现这是不可取的:如果您希望防止这种情况发生,您应该在相关列中禁止 NULL 值。

    PRIMARY 的行为与 UNIQUE 索引完全相同,只是它始终命名为“PRIMARY”,并且表上可能只有一个(并且应该始终存在一个;尽管某些数据库系统不强制执行此操作)。 PRIMARY 索引旨在作为唯一标识表中任何行的主要手段,因此与 UNIQUE 不同,它不应用于任何允许 NULL 值的列。您的 PRIMARY 索引应位于足以唯一标识行的最少列数上。通常,这只是一个包含唯一自动递增数字的列,但如果还有其他可以唯一标识一行的内容,例如国家列表中的“countrycode”,您可以使用它来代替。

    一些数据库系统(例如 MySQL 的 InnoDB)会按照它们在 PRIMARY 索引中出现的顺序将表的记录存储在磁盘上。

    【讨论】:

      猜你喜欢
      • 2011-05-28
      • 1970-01-01
      • 2016-06-26
      • 2013-10-01
      • 1970-01-01
      • 2014-04-19
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多