MySQL 显示索引

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;

注意:需要注意的是索引和键都是索引的同义词,IN 是 FROM 关键字的同义词。因此,我们也可以使用这些同义词来编写 Show Indexes 语句,如下所示:

mysql> SHOW INDEXES IN table_name FROM database_name;

或者,

mysql> SHOW KEYS FROM table_name IN database_name;

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

表: 包含表的名称。

非唯一: 如果索引包含重复项,则返回1。否则,返回0。

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

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

列名: 包含列的名称。

排序规则: 提供关于列在索引中如何排序的信息。它包含的值为 A 表示升序, D 表示降序,而 Null 表示未排序的。

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

子部分: 是索引的前缀。如果表的所有列都被索引,则其值为NULL。当列部分被索引时,它将返回索引的字符数。

打包: 告诉如何打包索引。否则,返回NULL。

NULL: 如果列没有NULL值,则包含 ;否则,返回YES。

索引类型: 包含索引方法的名称,如BTREE,HASH,RTREE,FULLTEXT等。

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

索引列: 当使用 comment 属性创建索引时,它包含指定索引的注释。

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

表达式: MySQL 8.0支持影响 表达式列名 列的 函数键部分 。我们可以通过以下要点更清楚地了解:

  • 对于函数部分,表达式列表示关键部分的表达式,列名表示NULL。
  • 对于非函数部分,表达式表示NULL,列名表示由关键部分索引的列。

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;

我们将获得以下输出:

MySQL 显示索引

过滤索引信息

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

Mysql> SHOW INDEXES FROM table_name where condition;

示例

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

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

它将提供以下输出:

MySQL 显示索引

Camera课程

Python教程

Java教程

Web教程

数据库教程

图形图像教程

办公软件教程

Linux教程

计算机教程

大数据教程

开发工具教程