• 首页
  • vue
  • TypeScript
  • JavaScript
  • scss
  • css3
  • html5
  • php
  • MySQL
  • redis
  • jQuery
  • SHOW INDEX语句

    SHOW [EXTENDED] {INDEX | INDEXES | KEYS}
        {FROM | IN} tbl_name
        [{FROM | IN} db_name]
        [WHERE expr]
    

    SHOW INDEX返回表索引信息。格式类似于SQLStatisticsODBC 中的调用格式。该语句要求对表中的任何列都具有一定的特权。

    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_namedb_nametbl_name

    SHOW INDEX FROM mytable FROM mydb;
    SHOW INDEX FROM mydb.mytable;
    

    可选EXTENDED关键字使输出包含有关MySQL内部使用的隐藏索引的信息,用户无法访问这些隐藏索引。

    WHERE条款可以给出使用更一般的条件来选择行,如在讨论第25.48,“扩展到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如果对整个列进行了索引,则如果仅对该列进行部分索引,则为索引字符的数量。

      注意

      前缀限制以字节为单位。然而,前缀长度为索引规范CREATE TABLEALTER TABLECREATE INDEX语句解释为非二进制串类型的字符数(CHARVARCHARTEXT对于二进制串类型),并且字节数(BINARYVARBINARYBLOB)。为使用多字节字符集的非二进制字符串列指定前缀长度时,请考虑到这一点。

      有关索引前缀的更多信息,请参见“列索引”和“ CREATE INDEX语句”。

    • Packed

      指示密钥的包装方式。NULL如果不是这样。

    • Null

      包含YES是否该列可能包含NULL值,''否则包含。

    • Index_type

      使用的索引方法(BTREEFULLTEXTHASHRTREE)。

    • Comment

      关于索引的信息未在其自己的列中描述,例如disabled是否禁用了索引。

    • Index_comment

      COMMENT创建索引时,为索引提供的任何注释均带有属性。

    • Visible

      索引是否对优化器可见。请参见“不可见索引”。

    • Expression

      MySQL 8.0.13和更高版本支持功能性关键部分(请参见 Functional Key Parts),这会影响Column_nameExpression列:

      • 对于非功能键部分,Column_name指示由键部分索引的列,且ExpressionNULL
      • 对于功能键部件,Column_name列为NULLExpression指示键部件的表达式。

    有关表索引的信息也可从INFORMATION_SCHEMASTATISTICS表中获得。请参见“ INFORMATION_SCHEMA STATISTICS表”。有关隐藏索引的扩展信息仅可使用SHOW EXTENDED INDEX;它不能从STATISTICS表中获得。

    您可以使用mysqlshow -k db_nametbl_name命令列出表的索引。