📅  最后修改于: 2020-11-17 02:36:02             🧑  作者: Mango
我们可以使用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列的功能关键部分。通过以下几点我们可以更清楚地理解它:
在这里,我们将创建一个表格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';
它将给出以下输出: