SHOW [EXTENDED] {INDEX | INDEXES | KEYS}
{FROM | IN} tbl_name
[{FROM | IN} db_name]
[WHERE expr]
SHOW INDEX
會傳回資料表索引資訊。此格式類似於 ODBC 中的 SQLStatistics
呼叫。此陳述式需要資料表中任何欄位的某些權限。
mysql> SHOW INDEX FROM City\G
*************************** 1. row ***************************
Table: city
Non_unique: 0
Key_name: PRIMARY
Seq_in_index: 1
Column_name: ID
Collation: A
Cardinality: 4188
Sub_part: NULL
Packed: NULL
Null:
Index_type: BTREE
Comment:
Index_comment:
Visible: YES
Expression: NULL
*************************** 2. row ***************************
Table: city
Non_unique: 1
Key_name: CountryCode
Seq_in_index: 1
Column_name: CountryCode
Collation: A
Cardinality: 232
Sub_part: NULL
Packed: NULL
Null:
Index_type: BTREE
Comment:
Index_comment:
Visible: YES
Expression: NULL
除了
語法之外,另一種替代方式是使用 tbl_name
FROM db_name
db_name
.tbl_name
。這兩個陳述式是等效的。
SHOW INDEX FROM mytable FROM mydb;
SHOW INDEX FROM mydb.mytable;
選用的 EXTENDED
關鍵字會使輸出包含 MySQL 內部使用且使用者無法存取的隱藏索引資訊。
可以使用 WHERE
子句,根據更通用的條件選擇資料列,如第 28.8 節「SHOW 陳述式的擴充功能」中所述。
SHOW INDEX
會傳回下列欄位:
Table
資料表的名稱。
Non_unique
如果索引不能包含重複項,則為 0;如果可以,則為 1。
Key_name
索引的名稱。如果索引是主鍵,則名稱一律為
PRIMARY
。Seq_in_index
索引中的欄位序列號,從 1 開始。
Column_name
欄位名稱。另請參閱
Expression
欄位的描述。Collation
欄位在索引中的排序方式。此值可以是
A
(遞增)、D
(遞減) 或NULL
(未排序)。Cardinality
索引中唯一值的估計數。若要更新此數字,請執行
ANALYZE TABLE
或 (針對MyISAM
資料表) myisamchk -a。Cardinality
是根據以整數形式儲存的統計資料計算的,因此即使是小型資料表,該值也不一定準確。基數越高,MySQL 在執行聯結時使用索引的可能性就越大。Sub_part
索引前置詞。也就是說,如果欄位只部分建立索引,則為已建立索引的字元數;如果整個欄位都建立索引,則為
NULL
。Note前置詞限制是以位元組為單位測量的。但是,
CREATE TABLE
、ALTER TABLE
和CREATE INDEX
陳述式中索引規格的前置詞長度,對於非二進位字串類型 (CHAR
、VARCHAR
、TEXT
) 會解譯為字元數,而對於二進位字串類型 (BINARY
、VARBINARY
、BLOB
) 則會解譯為位元組數。在為使用多位元組字元集的非二進位字串欄位指定前置詞長度時,請考慮這一點。如需有關索引前置詞的其他資訊,請參閱第 10.3.5 節「欄位索引」和第 15.1.15 節「CREATE INDEX 陳述式」。
Packed
指示金鑰的封裝方式。如果沒有封裝,則為
NULL
。Null
如果欄位可以包含
NULL
值,則包含YES
;如果不能,則包含''
。Index_type
使用的索引方法 (
BTREE
、FULLTEXT
、HASH
、RTREE
)。Comment
有關索引的其他資訊,這些資訊未在其自身的欄位中描述,例如,如果索引已停用,則為
disabled
。Index_comment
在建立索引時,使用
COMMENT
屬性為索引提供的任何註解。Visible
索引是否對最佳化工具可見。請參閱第 10.3.12 節「不可見索引」。
Expression
MySQL 支援函式金鑰部分 (請參閱函式金鑰部分);這會影響
Column_name
和Expression
欄位對於非函式金鑰部分,
Column_name
會指示金鑰部分建立索引的欄位,而Expression
為NULL
。對於函式金鑰部分,
Column_name
欄位為NULL
,而Expression
會指示金鑰部分的運算式。
有關資料表索引的資訊也可從 INFORMATION_SCHEMA
STATISTICS
資料表取得。請參閱第 28.3.34 節「INFORMATION_SCHEMA STATISTICS 資料表」。關於隱藏索引的擴充資訊只能使用 SHOW EXTENDED INDEX
取得;無法從 STATISTICS
資料表取得。
您可以使用 mysqlshow -k db_name
tbl_name
命令列出資料表的索引。
SHOW INDEX
預設會包含資料表的產生不可見金鑰 (如果有的話)。您可以設定 show_gipk_in_create_table_and_information_schema = OFF
,以在陳述式的輸出中隱藏此資訊。如需詳細資訊,請參閱第 15.1.20.11 節「產生的不可見主鍵」。