多列主键的MySQL KEY值(在desc表中)是什么?

时间:2013-06-20 10:55:04

标签: mysql

考虑下表:

create table t (
        n1 int, n2 int, index (n1, n2),
        u1 int, u2 int, unique index (u1, u2));

根据SHOW COLUMNS documentation因为<{p}}我期待Key = UNI {/ 1}}

  

如果Key为UNI,则该列是UNIQUE索引的第一列。 (UNIQUE索引允许多个NULL值,但您可以通过检查Null字段来判断该列是否允许NULL。)

我错过了什么?

u1的输出(不含列desc t;Default

Field   Type    Null    Key     Default Extra
n1      int(11) YES     MUL
n2      int(11) YES
u1      int(11) YES     MUL
u2      int(11) YES

Extra的输出(没有一些不相关的列)

Table   Non_unique      Key_name Seq_in_index   Column_name     Cardinality
t   0           u1  1           u1          0
t   0           u1  2           u2          0
t   1           n1  1           n1          0
t   1           n1  2           n2          0

1 个答案:

答案 0 :(得分:0)

已更新至问题更新帐户:

如果唯一索引中涉及多个列,则各列可能显示MUL而不是UNI,因为即使两列一起必须唯一,但各列可能不是。

从您的链接:

  

如果多个列形成复合UNIQUE索引,则UNIQUE索引可能显示为MUL;虽然列的组合是唯一的,但每列仍然可以保存给定值的多次出现。