mysql查看索引的方式

 更新时间:2023年09月05日 09:51:56   作者:牟云飞  
这篇文章主要介绍了mysql查看索引的方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教

mysql查看索引

1、查看数据库所有索引

SELECT * FROM mysql.`innodb_index_stats` a WHERE a.`database_name` = '数据库名';

2、查看某一表索引

SELECT * FROM mysql.`innodb_index_stats` a WHERE a.`database_name` = '数据库名' and a.table_name like '%表名%';

或者

通过命令窗口show index from tb1001_container;

mysql查看索引语句:SHOW INDEX讲解

概述

SHOW INDEX语句是MySQL中用于查看表索引信息的语句。

它提供了有关表中索引的详细信息,包括索引名称、索引类型、关联的列等。

以下是SHOW INDEX的详细说明:

语法

SHOW INDEX FROM table_name [FROM db_name] [WHERE condition];

参数说明 

  • table_name:需要查询索引的表名。
  • db_name:(可选)数据库名。如果你已经在某个数据库上下文中,可以省略此参数。
  • condition:(可选)可以添加WHERE子句来筛选索引信息,比如根据索引名称、索引类型等进行筛选。

SHOW INDEX语句返回以下信息

  • table:表名。
  • non_unique:是否允许重复值。如果值为1,表示允许重复值;如果值为0,表示不允许重复值(唯一索引)。
  • key_name:索引名称。主键索引名通常为PRIMARY。
  • seq_in_index:索引中的列的序号。对于组合索引,这表示列在索引中的位置。
  • column_name:列名,索引涉及的列。
  • collation:排序规则。A表示升序,NULL表示不可排序。
  • cardinality:索引的基数。这是一个估算值,表示索引中唯一值的数量。这个值对于查询优化器选择索引非常重要。
  • sub_part:索引的前缀长度。对于部分索引,这表示索引的前缀长度。
  • packed:索引是否被压缩。如果索引未被压缩,该列的值为NULL。
  • null:列是否允许包含NULL值。
  • index_type:索引类型。常见的类型有BTREE、HASH、FULLTEXT等。
  • comment:索引的备注。

示例

下面是一个名为examples的表,其中包含各种类型的索引:主键索引、唯一索引、普通索引、前缀索引和联合索引。

CREATE TABLE examples (
  id INT AUTO_INCREMENT,
  name VARCHAR(255),
  description TEXT,
  category VARCHAR(255),
  price DECIMAL(10, 2),
  PRIMARY KEY (id),
  UNIQUE KEY idx_name (name),
  KEY idx_category (category),
  KEY idx_category_price (category, price),
  KEY idx_name_prefix (name(10))
) ENGINE=InnoDB;

在这个示例中,我们创建了一个名为examples的表,包含以下类型的索引:

  • 主键索引(PRIMARY KEY):id列是主键索引。主键索引要求唯一且不允许NULL值。
  • 唯一索引(UNIQUE KEY):name列是唯一索引。唯一索引要求唯一,但允许NULL值。
  • 普通索引(KEY):category列是普通索引。普通索引允许重复值和NULL值。
  • 联合索引(KEY):category和price列组成了一个联合索引。这允许根据这两个列的组合进行更快的查询。
  • 前缀索引(KEY):name列的前10个字符被用作前缀索引。前缀索引允许在索引较长的字符串列时节省存储空间和提高查询速度,但可能会影响查询准确性。

现在,使用SHOW INDEX语句查询examples表的索引信息:

SHOW INDEX FROM examples;

输出结果(以表格形式表示):

在SHOW INDEX的输出中,你可以看到examples表的各种类型索引:

  • 主键索引(PRIMARY KEY):在key_name列中,PRIMARY关键字表示该行对应的是主键索引。non_unique列的值为0,说明主键索引的值必须是唯一的。在此例中,主键索引是id列。
  • 唯一索引(UNIQUE KEY):在key_name列中,自定义的索引名称(例如idx_name)表示这是一个唯一索引。non_unique列的值为0,说明唯一索引的值必须是唯一的,但允许NULL值。在此例中,唯一索引是name列。
  • 普通索引(KEY):在key_name列中,自定义的索引名称(例如idx_category)表示这是一个普通索引。non_unique列的值为1,说明普通索引允许重复值和NULL值。在此例中,普通索引是category列。
  • 前缀索引(KEY):前缀索引的识别方法与普通索引相同,但在sub_part列中有一个值,表示使用列值的前多少个字符作为前缀索引。在此例中,idx_name_prefix是一个前缀索引,它将name列的前10个字符作为索引。
  • 联合索引(KEY):联合索引可以通过key_name列中的相同索引名称以及不同的seq_in_index值来识别。在seq_in_index列中,数字表示列在联合索引中的顺序。在此例中,idx_category_price是一个联合索引,包括category和price两个列。

在这两行中,key_name列的值都是idx_category_price,表明它们属于同一个索引。

seq_in_index列的值分别为1和2,表示category和price这两个列在联合索引中的顺序。 

注意,SHOW INDEX语句及返回的结果列可能会因MySQL版本的不同而有所差异。

本解释基于MySQL 8.0版本。在其他版本中,返回的结果列可能有所不同。要获取与您的MySQL版本对应的详细信息,请查阅官方文档。

总结

以上为个人经验,希望能给大家一个参考,也希望大家多多支持脚本之家。

相关文章

  • Mysql删除几亿条数据表中的部分数据的方法实现

    Mysql删除几亿条数据表中的部分数据的方法实现

    在MySQL中删除一个大表中的数据时,需要特别注意操作的性能和对系统的影响,本文主要介绍了Mysql删除几亿条数据表中的部分数据的方法实现,具有一定的参考价值,感兴趣的可以了解一下
    2025-03-03
  • 详解MySQL 5.7 MGR单主确定主节点方法

    详解MySQL 5.7 MGR单主确定主节点方法

    这篇文章主要介绍了详解MySQL 5.7 MGR单主确定主节点方法,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2019-09-09
  • Mysql主从GTID与binlog的区别及说明

    Mysql主从GTID与binlog的区别及说明

    MySQL GTID(全局事务标识符)与binlog(二进制日志)是搭建主从复制的两种机制,GTID为每个事务分配唯一标识,确保复制无数据冲突或丢失,便于复制配置和管理;binlog记录所有数据库更改,用于数据恢复和复制,GTID基于事务标识
    2024-10-10
  • Mysql中where与having的区别实例详解

    Mysql中where与having的区别实例详解

    当SQL语句中使用聚合函数,然后又需要对聚合函数的记录集进行筛选过滤时,这个时候就需要用到Having子句,下面这篇文章主要给大家介绍了关于Mysql中where与having区别的相关资料,需要的朋友可以参考下
    2023-01-01
  • MySQL5.7.31 64位免安装版使用教程图解

    MySQL5.7.31 64位免安装版使用教程图解

    这篇文章主要介绍了MySQL5.7.31 64位免安装版使用教程,本文通过图文并茂的形式给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2020-10-10
  • MySQL数据库基础学习之JSON函数各类操作详解

    MySQL数据库基础学习之JSON函数各类操作详解

    很多日常业务场景都会用到json文件作为数据存储起来,而mysql5.7以上就提供了存储json的支撑。这篇文章就为大家整理了MySQL中JSON函数的各类操作,感兴趣的可以了解一下
    2023-02-02
  • mysql5.7.20第一次登录失败的快速解决方法

    mysql5.7.20第一次登录失败的快速解决方法

    这篇文章主要介绍了mysql5.7.20第一次登录失败的快速解决方法,需要的朋友可以参考下
    2018-09-09
  • 解决Mysql 8.0.17 winx64版本安装过程中遇到的问题

    解决Mysql 8.0.17 winx64版本安装过程中遇到的问题

    这篇文章主要介绍了Mysql 8.0.17 winx64版本安装过程中遇到的问题 ,非常不错,具有一定的参考借鉴价值,需要的朋友可以参考下
    2019-08-08
  • 教你解决往mysql数据库中存入汉字报错的方法

    教你解决往mysql数据库中存入汉字报错的方法

    这篇文章主要介绍了Mysql基础之教你解决往数据库中存入汉字报错的方法,文中有非常详细的代码示例,对正在学习mysql的小伙伴们有非常好的帮助,需要的朋友可以参考下
    2021-05-05
  • mysql 报错This function has none of DETERMINISTIC解决方案

    mysql 报错This function has none of DETERMINISTIC解决方案

    这篇文章主要介绍了mysql 报错This function has none of DETERMINISTIC解决方案的相关资料,需要的朋友可以参考下
    2016-11-11

最新评论