MySQL InnoDB中的集群主键

MySQL InnoDB中的集群主键,mysql,primary-key,clustered-index,Mysql,Primary Key,Clustered Index,我们有一个MySQL数据库,它有一个InnoDB表,其中包含两个整数字段,比如a和B。 现在假设我们使用索引a和B创建一个集群主键。 每次填充A,B对时,我们的数据库中都会有一个不同的索引,所以 A=123和B=456将生成唯一索引 A=123和B=457将生成另一个唯一索引 A=124和B=456将生成另一个索引,依此类推 我想知道情况A=123,B=456是否会生成与A=456,B=123相同的索引(因此发生冲突)。如果答案是否定的(我猜),MySQL如何组合这些字段以获得唯一索引?为了

我们有一个MySQL数据库,它有一个InnoDB表,其中包含两个整数字段,比如
a
B
。 现在假设我们使用索引a和B创建一个集群主键。 每次填充A,B对时,我们的数据库中都会有一个不同的索引,所以

  • A=123和B=456将生成唯一索引
  • A=123和B=457将生成另一个唯一索引
  • A=124和B=456将生成另一个索引,依此类推

我想知道情况
A=123,B=456
是否会生成与
A=456,B=123
相同的索引(因此发生冲突)。如果答案是否定的(我猜),MySQL如何组合这些字段以获得唯一索引?为了生成唯一索引,由于上述原因,求和
A+B
不好,乘积
A*B
将在变量中浪费大量空间,而且当A或B为零时将失败,那么MySQL(或任何其他数据库)使用什么算法来实现此结果

MySQL索引保留列顺序,并分别存储每个列的值

你可以把它想象成一本电话簿。电话簿就像两列索引:姓,然后是名

在电话簿中,他们不会将姓名加在一起。它们都存储,用逗号分隔。所以“Thomas Jay”与“Jay Thomas”是不同的条目。很明显,它们是独立的字段

在多列索引中也是如此。柱子的位置很重要。它们不会相加、相乘或其他任何形式


注意:您使用的“聚集”有点令人困惑,因为聚集索引在数据库中已经有了不同的含义。这意味着表是按索引顺序存储的。如果你指的是一个包含多个列的索引,我建议使用“复合索引”。

MySQL索引保留列顺序,并分别存储每个列的值

你可以把它想象成一本电话簿。电话簿就像两列索引:姓,然后是名

在电话簿中,他们不会将姓名加在一起。它们都存储,用逗号分隔。所以“Thomas Jay”与“Jay Thomas”是不同的条目。很明显,它们是独立的字段

在多列索引中也是如此。柱子的位置很重要。它们不会相加、相乘或其他任何形式


注意:您使用的“聚集”有点令人困惑,因为聚集索引在数据库中已经有了不同的含义。这意味着表是按索引顺序存储的。当你指的是一个包含多个列的索引时,我建议使用“复合索引”。

为什么你认为A=123,B=456与A=456,B=123相同?唯一约束/主键可确保基于定义中的字段没有重复记录。如果A,B是您的定义,则表中不能有任何匹配的记录具有相同的A,B值。有效的唯一约束意味着您可以仅基于A,B来唯一标识表中的每一行。为什么您认为A=123,B=456与A=456,B=123相同?唯一约束/主键可确保基于定义中的字段没有重复记录。如果A,B是您的定义,则表中不能有任何匹配的记录具有相同的A,B值。有效的唯一约束意味着您可以仅基于A,B来唯一标识表中的每一行。对不起,也许我试图解释我的疑问时太模糊了。我指的正是聚集索引inded。我有两个coulmn,都是整数类型,一个是Latitudex10000,另一个是longitudex1000,然后我有一个Place列(string)。现在我想确保每个位置都有一条记录(00001°我们有一个16 mt分辨率的网格),而且我希望搜索速度快,所以我使用Lon,Lat创建了一个聚集索引。我担心如果Lat和Lon值互换,记录与41.1243°相同,14.6342°与14.6342°完全不同,41.1243°。由您将值存储在右侧列中。如果你交换它们,它将是索引中不同的条目。谢谢比尔,你的电话簿示例很有启发性。如果我三思而后行,我想知道我的怀疑有多愚蠢。的确,你从不停止学习;-)谢谢对不起,也许我试图解释我的怀疑时太模糊了。我指的正是聚集索引inded。我有两个coulmn,都是整数类型,一个是Latitudex10000,另一个是longitudex1000,然后我有一个Place列(string)。现在我想确保每个位置都有一条记录(00001°我们有一个16 mt分辨率的网格),而且我希望搜索速度快,所以我使用Lon,Lat创建了一个聚集索引。我担心如果Lat和Lon值互换,记录与41.1243°相同,14.6342°与14.6342°完全不同,41.1243°。由您将值存储在右侧列中。如果你交换它们,它将是索引中不同的条目。谢谢比尔,你的电话簿示例很有启发性。如果我三思而后行,我想知道我的怀疑有多愚蠢。的确,你从不停止学习;-)谢谢