📜  MySQL Show Indexes语句

📅  最后修改于: 2020-11-17 02:36:02             🧑  作者: Mango

MySQL显示索引

我们可以使用Show Indexes语句获取表的索引信息。该语句可以写为:

mysql> SHOW INDEXES FROM table_name;

在以上语法中,我们可以看到,如果要获取表的索引,则需要在FROM关键字之后指定table_name。语句成功执行后,它将返回当前数据库中表的索引信息。

如果我们想获取另一个数据库或您未连接的数据库中表的索引信息,MySQL允许我们使用Show Indexes语句指定数据库名称。以下语句对其进行了更清晰的说明:

mysql> SHOW INDEXES FROM table_name IN database_name;

上面的语句也可以写成:

mysql> SHOW INDEXES FROM database_name.table_name;

注意:请注意,Index和Keys都是Indexes的同义词,IN是FROM关键字的同义词。因此,我们还可以使用以下同义词编写Show Indexes语句:

mysql> SHOW INDEXES IN table_name FROM database_name;

要么,

mysql> SHOW KEYS FROM table_name IN database_name;

SHOW INDEX查询返回以下字段/信息:

表格:它包含表格的名称。

Non_unique:如果索引包含重复项,则返回1。否则,它返回0。

Key_name:它是索引的名称。如果表包含主键,则索引名称始终为PRIMARY。

Seq_in_index:它是索引中从1开始的列的序列号。

Column_name:它包含列的名称。

排序规则:提供有关如何在索引中对列进行排序的信息。它包含以下值:A代表升序,D代表降序,Null代表未排序。

基数:它给出了索引表中唯一值的估计数量,其中较高的基数表示MySQL使用索引的机会更大。

Sub_part:它是索引的前缀。如果表的所有列都已建立索引,则它具有NULL值。对该列进行部分索引时,它将返回索引字符的数量。

已打包:告诉您如何打包密钥。否则,它返回NULL。

NULL:如果该列没有NULL值,则包含空白;否则为0。否则,返回YES。

Index_type:它包含索引方法的名称,例如BTREE,HASH,RTREE,FULLTEXT等。

注释:当索引信息未在其列中描述时,它包含索引信息。例如,当索引被禁用时,它返回禁用状态。

Index_column:创建带有注释属性的索引时,它包含指定索引的注释。

可见:如果索引对查询优化器可见,则为YES,否则为NO。

表达式:MySQL 8.0支持影响表达式和column_name列的功能关键部分。通过以下几点我们可以更清楚地理解它:

  • 对于功能部件,expression列表示关键部件的表达式,column_name表示NULL。
  • 对于非功能部分,表达式表示NULL,而column_name表示由关键部分索引的列。

MySQL SHOW INDEX示例

在这里,我们将创建一个表格Student_info,其中包含学生ID,姓名,年龄,手机号码和电子邮件详细信息。执行以下命令创建表:

CREATE TABLE `student_info` (
  `studentid` int NOT NULL AUTO_INCREMENT,
  `name` varchar(45) DEFAULT NULL,
  `age` varchar(3) DEFAULT NULL,
  `mobile` varchar(20) DEFAULT NULL,
  `email` varchar(25) DEFAULT NULL,
  PRIMARY KEY (`studentid`),
  UNIQUE KEY `email_UNIQUE` (`email`)
)

接下来,我们通过以下命令在此表上创建索引:

mysql> CREATE INDEX mobile ON student_info (mobile) INVISIBLE;

mysql> CREATE INDEX name ON student_info (name) COMMENT 'Student Name';

现在,执行以下命令,返回student_info表中的所有索引信息:

mysql> SHOW INDEXES FROM student_info;

我们将获得以下输出:

筛选索引信息

我们可以使用where子句过滤索引信息。以下语句可用于过滤索引信息:

Mysql> SHOW INDEXES FROM table_name where condition;

如果只想获取student_info表的不可见索引,请执行以下命令:

mysql> SHOW INDEXES FROM student_info WHERE visible = 'NO';

它将给出以下输出: