Mysql 简明教程

MySQL - Show Indexes

MySQL 索引是一种特殊查找表类型,用于简化数据库中的数据检索。它指向数据库中的实际数据。

MySQL 允许在表中的一个或多个列上创建不同类型的索引。它们有:

  1. Primary Key Index

  2. Unique Index

  3. Simple Index

  4. Composite Index

  5. Implicit Index

为了检查表中是否定义了这些索引,MySQL 提供了 SHOW INDEX 语句。

The MySQL SHOW INDEX Statement

MySQL 的 SHOW INDEX 语句用于列出表索引信息。

Syntax

以下是 SHOW INDEX 语句的基本语法 −

SHOW INDEX FROM table_name;

Example

在此示例中,我们使用以下 CREATE TABLE 查询创建一个新表 CUSTOMERS ,并向其某一列添加一个 PRIMARY KEY 索引 −

CREATE TABLE CUSTOMERS (
   ID INT NOT NULL,
   NAME VARCHAR (20) NOT NULL,
   AGE INT NOT NULL,
   ADDRESS CHAR (25),
   SALARY DECIMAL (18, 2),
   PRIMARY KEY(ID),
   INDEX(NAME)
);

现在,我们可以使用以下 SHOW INDEX 查询显示 CUSTOMERS 表上存在的索引 −

SHOW INDEX FROM CUSTOMERS\G

Output

垂直输出将显示为 −

*************************** 1. row ************************
        Table: customers
   Non_unique: 0
     Key_name: PRIMARY
 Seq_in_index: 1
  Column_name: ID
    Collation: A
  Cardinality: 0
     Sub_part: NULL
       Packed: NULL
         Null:
   Index_type: BTREE
      Comment:
Index_comment:
      Visible: YES
   Expression: NULL
*************************** 2. row ************************
        Table: customers
   Non_unique: 1
     Key_name: NAME
 Seq_in_index: 1
  Column_name: NAME
    Collation: A
  Cardinality: 0
     Sub_part: NULL
       Packed: NULL
         Null:
   Index_type: BTREE
      Comment:
Index_comment:
      Visible: YES
   Expression: NULL
2 rows in set (0.01 sec)

With IN Clause

在此示例中,让我们首先使用以下 CREATE INDEX 查询对 CUSTOMERS 表的 AGE 列创建索引 −

CREATE INDEX AGE_INDEX ON CUSTOMERS (AGE);

你还可以通过指定数据库名称来检索信息 −

SHOW INDEX IN CUSTOMERS FROM sample\G

Output

输出将与以上相同 −

*************************** 1. row ***************************
        Table: customers
   Non_unique: 0
     Key_name: PRIMARY
 Seq_in_index: 1
  Column_name: ID
    Collation: A
  Cardinality: 0
     Sub_part: NULL
       Packed: NULL
         Null:
   Index_type: BTREE
      Comment:
Index_comment:
      Visible: YES
   Expression: NULL
*************************** 2. row ***************************
        Table: customers
   Non_unique: 1
     Key_name: NAME
 Seq_in_index: 1
  Column_name: NAME
    Collation: A
  Cardinality: 0
     Sub_part: NULL
       Packed: NULL
         Null:
   Index_type: BTREE
      Comment:
Index_comment:
      Visible: YES
   Expression: NULL
2 rows in set (0.01 sec)

With WHERE Clause

由于索引以表格格式显示,因此我们可以将 WHERE 子句与 SHOW INDEX 语句配合使用,以检索与给定条件匹配的指定索引。

SHOW INDEX IN CUSTOMERS WHERE Column_name = 'NAME'\G

Output

将显示 NAME 列上创建的索引 −

*************************** 1. row ************************
        Table: customers
   Non_unique: 1
     Key_name: NAME
 Seq_in_index: 1
  Column_name: NAME
    Collation: A
  Cardinality: 0
     Sub_part: NULL
       Packed: NULL
         Null:
   Index_type: BTREE
      Comment:
Index_comment:
      Visible: YES
   Expression: NULL
1 row in set (0.00 sec)

Show Indexes Using Client Program

我们还可以使用客户端程序显示 MySQL 表的索引信息。

Syntax

以下是使用各种编程语言显示 MySQL 表上索引的语法 −

Example

以下是这些程序 −