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 節,「產生的隱形主鍵」。