文件首頁
MySQL 9.0 參考手冊
相關文件 下載本手冊
PDF (US Ltr) - 40.0Mb
PDF (A4) - 40.1Mb
Man Pages (TGZ) - 258.2Kb
Man Pages (Zip) - 365.3Kb
Info (Gzip) - 4.0Mb
Info (Zip) - 4.0Mb


MySQL 9.0 參考手冊  /  ...  /  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 節「產生的不可見主鍵」