2013-06-20 35 views
0

考慮下表:多列主鍵的MySQL KEY值(在desc表中)是什麼?

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

按照SHOW COLUMNS documentation我期待Key = UNIu1因爲

如果重點是UNI,該列是UNIQUE索引的第一列。 (一個UNIQUE索引允許有多個NULL值,但你可以通過檢查Null字段來判斷該列是否允許NULL)。

我在想什麼?

desc t;輸出(沒有列DefaultExtra

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

show index from t;輸出(不含一些無關痛癢的列)

 
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 
+0

我認爲你的答案就在這裏:http://stackoverflow.com/questions/5317889/sql-keys-mul-vs-pri – maqjav

回答

0

更新,考慮問題的更新:

如果多列參與了唯一索引,各列可能顯示MUL而不是UNI,因爲即使兩個列合在一起必須始終是唯一的,但各個列可能不一樣。

從你的鏈接:

如果若干列形成複合UNIQUE索引UNIQUE索引可能會顯示爲MUL;儘管列的組合是唯一的,但每列仍可以存在給定值的多次出現。

+0

哎喲,我的意思是UNI,我所引用的相關部分。我很抱歉再次改變主意。 –

+0

@Matt戴維斯 - 請你可以編輯你的文章,以提取作爲blockquote,而不是代碼?用'>'而不是四個空格前綴行。由於編輯被認爲「太瑣碎」,我無法改變這一點。謝謝! – nurdglaw

+0

根據您的新問題更新:)注意@nurdglaw,謝謝! –