如果我在两个字段上定义 MySQL 索引,我如何找出哪两个字段属于一起(使用 MySQL 命令)。
这是一个示例表:
mysql> DESCRIBE lansuite_wiki_versions;
+-----------+-----------------------+------+-----+-------------------+-----------------------------+
| Field | Type | Null | Key | Default | Extra |
+-----------+-----------------------+------+-----+-------------------+-----------------------------+
| versionid | int(11) | NO | PRI | 0 | |
| postid | int(11) | NO | PRI | 0 | |
| date | timestamp | NO | | CURRENT_TIMESTAMP | on update CURRENT_TIMESTAMP |
| userid | mediumint(8) unsigned | NO | MUL | 0 | |
| text | text | NO | MUL | NULL | |
| test1 | int(11) | NO | MUL | NULL | |
| test2 | int(11) | NO | | NULL | |
+-----------+-----------------------+------+-----+-------------------+-----------------------------+
7 rows in set (0.00 sec)
该表的索引定义如下:
- 版本号 + 帖子号
- userid
- 测试1 + 测试2
- text
我知道这一点,因为我已经分配了它们并在 phpmyadmin 中看到它们。
但我也想在我的应用程序中看到它。
所以我找到了这个 mySQL 命令:
mysql> SHOW INDEX FROM lansuite_wiki_versions;
+------------------------+------------+----------+--------------+-------------+-----------+-------------+----------+--------+------+------------+---------+
| Table | Non_unique | Key_name | Seq_in_index | Column_name | Collation | Cardinality | Sub_part | Packed | Null | Index_type | Comment |
+------------------------+------------+----------+--------------+-------------+-----------+-------------+----------+--------+------+------------+---------+
| lansuite_wiki_versions | 0 | PRIMARY | 1 | versionid | A | NULL | NULL | NULL | | BTREE | |
| lansuite_wiki_versions | 0 | PRIMARY | 2 | postid | A | 144 | NULL | NULL | | BTREE | |
| lansuite_wiki_versions | 1 | userid | 1 | userid | A | 4 | NULL | NULL | | BTREE | |
| lansuite_wiki_versions | 1 | test | 1 | test1 | A | 1 | NULL | NULL | | BTREE | |
| lansuite_wiki_versions | 1 | test | 2 | test2 | A | 1 | NULL | NULL | | BTREE | |
| lansuite_wiki_versions | 1 | text | 1 | text | NULL | 1 | NULL | NULL | | FULLTEXT | |
+------------------------+------------+----------+--------------+-------------+-----------+-------------+----------+--------+------+------------+---------+
6 rows in set (0.00 sec)
但是我怎么看versionid + postid是连接的呢?
我可以看到 Seq_in_index 正在计数。那么,我是否可以依靠 versionid 和 postid 形成一个公共索引,仅仅因为它们在此输出中彼此相邻的行中并且 Seq_in_index 向上计数?
或者是否有其他命令可以显示定义了哪些索引?
每个索引的 Key_name 都是唯一的;属于同一索引的列在此表中将具有相同的名称。
seq_in_index 为您提供序列。
如果您查看包含索引的 INFORMATION_SCHEMA 表(查看文档),可能会更有意义。
我假设您正在编写一个工具来以编程方式检查数据库结构。
如果您是人类并且想查看表结构,我建议使用 SHOW CREATE TABLE。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)