文件首頁
MySQL 8.4 參考手冊
相關文件 下載本手冊
PDF (美式信紙) - 39.9Mb
PDF (A4) - 40.0Mb
Man Pages (TGZ) - 258.5Kb
Man Pages (Zip) - 365.5Kb
Info (Gzip) - 4.0Mb
Info (Zip) - 4.0Mb


MySQL 8.4 參考手冊  /  ...  /  SHOW INDEX 語法

15.7.7.23 SHOW INDEX 語法

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 TABLEALTER TABLECREATE INDEX 語句中索引規格的前綴長度,對於非二進位字串類型(CHARVARCHARTEXT)會解釋為字元數,而對於二進位字串類型(BINARYVARBINARYBLOB)則解釋為位元組數。在為使用多位元組字元集的非二進位字串資料行指定前綴長度時,請將此納入考量。

    如需索引前綴的更多資訊,請參閱第 10.3.5 節,「資料行索引」第 15.1.15 節,「CREATE INDEX 語句」

  • Packed

    指示索引的封裝方式。如果未封裝則為 NULL

  • Null

    如果資料行可以包含 NULL 值則包含 YES,否則包含 ''

  • Index_type

    使用的索引方法(BTREEFULLTEXTHASHRTREE)。

  • Comment

    索引的相關資訊,但未在自己的欄位中描述,例如,如果索引已停用,則為 disabled

  • Index_comment

    建立索引時,使用 COMMENT 屬性為索引提供的任何註解。

  • Visible

    索引是否對最佳化工具可見。請參閱第 10.3.12 節,「隱形索引」

  • Expression

    MySQL 支援功能鍵部分(請參閱功能鍵部分);這會影響 Column_nameExpression 欄位。

    • 對於非功能鍵部分,Column_name 指示鍵部分建立索引的資料行,而 ExpressionNULL

    • 對於功能鍵部分,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 節,「產生的隱形主鍵」