zoukankan      html  css  js  c++  java
  • The MySQL SHOW INDEX command

     

    For a long time I couldn't remember how to show the indexes for a database table with MySQL, but I think it's finally sunk in. Just use the MySQL SHOW INDEX command, like this:

    show index from node;
    

      

    That example can be read as, "Show the indexes from the database table named node". It assumes that you have already selected a database table, so really, a full sequence of commands to show a MySQL database table index looks like this:

    # log into your mysql database
    $ mysql -u root -p
    
    # once in mysql, select your database
    mysql> use drupal;
    Database changed
    

      

    # now show the index on the node table in the drupal database mysql> show index from node;
    

      

    Or, if you prefer, you don't have to switch to your database, you can include the name of the database in your show index query, like this:

    show indexes from node from drupal;
    

      

    Syntax variations

    As you may have noticed from that last example, you don't have to type show index; either of the following three commands will give you the same results:

    show index from node;
    show indexes from node;
    show keys from node;
    

      

    I actually prefer the second version (show indexes) because it's easier to read, and closely corresponds to how I'd like to say this as a human being: "Show the indexes from (the database table named) node".

    Output from MySQL SHOW INDEX

    Of course the output from the MySQL show index command will vary depending on the indexes that have been created on your table, but here's what it looks like when I run it on my Drupal term_datatable on my test server:

    +-----------+------------+---------------+--------------+-------------+-----------+-------------+----------+--------+------+------------+---------+
    | Table     | Non_unique | Key_name      | Seq_in_index | Column_name | Collation | Cardinality | Sub_part | Packed | Null | Index_type | Comment |
    +-----------+------------+---------------+--------------+-------------+-----------+-------------+----------+--------+------+------------+---------+
    | term_data |          0 | PRIMARY       |            1 | tid         | A         |        3224 |     NULL | NULL   |      | BTREE      |         | 
    | term_data |          1 | taxonomy_tree |            1 | vid         | A         |           2 |     NULL | NULL   |      | BTREE      |         | 
    | term_data |          1 | taxonomy_tree |            2 | weight      | A         |           2 |     NULL | NULL   |      | BTREE      |         | 
    | term_data |          1 | taxonomy_tree |            3 | name        | A         |        3224 |     NULL | NULL   |      | BTREE      |         | 
    | term_data |          1 | vid_name      |            1 | vid         | A         |           2 |     NULL | NULL   |      | BTREE      |         | 
    | term_data |          1 | vid_name      |            2 | name        | A         |        3224 |     NULL | NULL   |      | BTREE      |         | 
    +-----------+------------+---------------+--------------+-------------+-----------+-------------+----------+--------+------+------------+---------+
    6 rows in set (0.00 sec)
    

      

    The key_name column shows the names of the indexes on the table, so in this case, my term_data table has the following indexes:

    • PRIMARY
    • taxonomy_tree
    • vid_name

    As its name implies, the PRIMARY key is the key on the primary field of the table. The Seq_in_indexcolumn tells you the sequence of each field in the index, so the taxonomy_tree index is a compound index, with the following three fields in the key:

    • vid
    • weight
    • name
     

    Another way to see MySQL indexes

    You can confirm this with another MySQL SHOW command, a command which also lets you see the indexes on a MySQL database table. This time we use the show create table syntax, which looks like this when run on the term_data table:

    show create table term_data;
    

      

    Here's the output from that command:

    term_data | CREATE TABLE `term_data` (
      `tid` int(10) unsigned NOT NULL auto_increment,
      `vid` int(10) unsigned NOT NULL default '0',
      `name` varchar(255) NOT NULL default '',
      `description` longtext,
      `weight` tinyint(4) NOT NULL default '0',
      PRIMARY KEY  (`tid`),
      KEY `taxonomy_tree` (`vid`,`weight`,`name`),
      KEY `vid_name` (`vid`,`name`)
    ) ENGINE=MyISAM AUTO_INCREMENT=3228 DEFAULT CHARSET=utf8 
    

      

    As you can see from this line of that output:

    KEY `taxonomy_tree` (`vid`,`weight`,`name`),
    

      

    the taxonomy_tree index has the three fields in the sequence shown earlier.

     

    Help remembering these commands

    If (like me) you have trouble remembering these MySQL SHOW commands, it may be easier to just remember this MySQL help command:

    help show;
    

      

    In MySQL 5.x, this help command shows the following output, including the two commands I've covered in this article:

    mysql> help show;
    Name: 'SHOW'
    Description:
    SHOW has many forms that provide information about databases, tables,
    columns, or status information about the server. This section describes
    those following:
    
    SHOW [FULL] COLUMNS FROM tbl_name [FROM db_name] [LIKE 'pattern']
    SHOW CREATE DATABASE db_name
    SHOW CREATE FUNCTION funcname
    SHOW CREATE PROCEDURE procname
    SHOW CREATE TABLE tbl_name
    SHOW DATABASES [LIKE 'pattern']
    SHOW ENGINE engine_name {LOGS | STATUS }
    SHOW [STORAGE] ENGINES
    SHOW ERRORS [LIMIT [offset,] row_count]
    SHOW FUNCTION CODE sp_name
    SHOW FUNCTION STATUS [LIKE 'pattern']
    SHOW GRANTS FOR user
    SHOW INDEX FROM tbl_name [FROM db_name]
    SHOW INNODB STATUS
    SHOW PROCEDURE CODE sp_name
    SHOW PROCEDURE STATUS [LIKE 'pattern']
    SHOW [BDB] LOGS
    SHOW MUTEX STATUS
    SHOW PRIVILEGES
    SHOW [FULL] PROCESSLIST
    SHOW PROFILE [types] [FOR QUERY n] [OFFSET n] [LIMIT n]
    SHOW PROFILES
    SHOW [GLOBAL | SESSION] STATUS [LIKE 'pattern']
    SHOW TABLE STATUS [FROM db_name] [LIKE 'pattern']
    SHOW [OPEN] TABLES [FROM db_name] [LIKE 'pattern']
    SHOW TRIGGERS
    SHOW [GLOBAL | SESSION] VARIABLES [LIKE 'pattern']
    SHOW WARNINGS [LIMIT [offset,] row_count]
    
    The SHOW statement also has forms that provide information about
    replication master and slave servers and are described in [HELP PURGE
    MASTER LOGS]:
    
    SHOW BINARY LOGS
    SHOW BINLOG EVENTS
    SHOW MASTER STATUS
    SHOW SLAVE HOSTS
    SHOW SLAVE STATUS
    

      

    If the syntax for a given SHOW statement includes a LIKE 'pattern' part, 'pattern' is a string that can contain the SQL `%' and `_' wildcard characters. The pattern is useful for restricting statement output to matching values. Several SHOW statements also accept a WHERE clause that provides more flexibility in specifying which rows to display. See http://dev.mysql.com/doc/refman/5.0/en/extended-show.html. URL: http://dev.mysql.com/doc/refman/5.0/en/show.html

    As a final point of reference, here's a link to the MySQL SHOW INDEX documentation.

  • 相关阅读:
    DHTML 动态效果100例
    Apache 发布网站
    Django笔记 3
    JDBC
    Android国行手机使用Google Play Store
    Cloud9 使用 GitHub
    maven
    linux 下查看系统信息的一些命令
    C++成员变量指针和成员函数指针
    SIP 协议
  • 原文地址:https://www.cnblogs.com/hephec/p/4586889.html
Copyright © 2011-2022 走看看