0

考虑下表:

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

根据我所期待的SHOW COLUMNS 文档Key = UNIu1因为

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

我错过了什么?

.

的输出desc t;(没有列DefaultExtra

字段类型 Null Key 默认 Extra
n1 int(11) 是 MUL
n2 int(11) 是
u1 int(11) 是 MUL
u2 int(11) 是

.

输出show index from t;(没有一些不相关的列)

表 Non_unique Key_name Seq_in_index Column_name 基数
t 0 u1 1 u1 0
t 0 u1 2 u2 0
t 1 n1 1 n1 0
t 1 n1 2 n2 0
4

1 回答 1

0

更新以考虑问题更新:

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

从您的链接:

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

于 2013-06-20T10:59:02.120 回答