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_namedb_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 節「不可見索引」。
ExpressionMySQL 支援函式金鑰部分 (請參閱函式金鑰部分);這會影響
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 節「產生的不可見主鍵」。