暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

MySQL的SQL语句 - 数据库管理语句 - SHOW 语句 - SHOW INDEX 语句

数据库杂货铺 2021-04-12
631

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 子句可用于更通用的条件选择。

         

        SHOW INDEX 返回以下字段:

         

         Table

         

        表的名称。

         

         Non_unique

         

        如果索引不能包含重复项,则为0;如果可以,则为1

         

         Key_name

         

        索引的名称。如果索引是主键,则名称始终是 PRIMARY

         

         Seq_in_index

         

        索引中的列序列号,从1开始。

         

         Column_name

         

        列名。

         

         Collation

         

        列在索引中的排序方式。其值可以是 A(升序)、D(降序)或 NULL(未排序)。

         

         Cardinality

         

        对索引中唯一值的数量的估计。要更新此数字,请运行 ANALYZE TABLE 或(对于 MyISAM 表)myisamchk -a

         

        基数是基于存储为整数的统计信息来计算的,因此即使对于小表,该值也不一定精确。基数越高,MySQL 在执行连接时使用索引的可能性就越大。

         

         Sub_part

         

        索引前缀。也就是说,如果列仅被部分索引,则为索引字符数;如果整列被索引,则为 NULL

         

        注意

         

        前缀限制以字节为单位。但是,CREATE TABLEALTER TABLE CREATE INDEX 语句中索引规范的前缀长度被解释为非二进制字符串类型(CHARVARCHARTEXT)的字符数和二进制字符串类型(BINARYVARBINARYBLOB)的字节数。当为使用多字节字符集的非二进制字符串列指定前缀长度时,请考虑这一点。

         

         Packed

         

        指示索引的压缩方式。如果不是,则为 NULL

         

         Null

         

        如果列可能包含 NULL 值,则包含 YES;否则为 ''

         

         Index_type

         

        使用的索引方法(BTREEFULLTEXTHASHRTREE)。

         

         Comment

         

        索引未在其自己的列中描述的信息,例如如果索引被禁用,则为 disabled

         

         Index_comment

         

        创建索引时,使用 COMMENT 属性为索引提供的注释。

         

         Visible

         

        索引对优化器是否可见。

         

         Expression

         

        MySQL 8.0.13 及更高版本支持函数索引,它同时影响 Column_name Expression 列:

         

         对于非函数索引,Column_name 表示索引的列,Expression 为空。

         

         对于函数索引,Column_name 列为 NULLExpression 表示索引的表达式。

         

        关于表索引的信息也可以从 INFORMATION_SCHEMA STATISTICS 表中获得。有关隐藏索引的扩展信息只能使用 SHOW EXTENDED INDEX 获得;不能从 STATISTICS 表中获得。

         

        还可以使用 mysqlshow -k db_name tbl_name 命令列出表的索引。

         

         

         

         

         

        官方文档:

        https://dev.mysql.com/doc/refman/8.0/en/show-index.html

         


        文章转载自数据库杂货铺,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

        评论