mysql中show index命令的使用

这篇文章介绍了MySQL中的SHOWINDEX命令,用于查询表的索引信息,特别是强调了Cardinality(唯一值数量)在查询优化中的作用。作者建议读者通过实践查看自己的业务表来加深理解。
摘要由CSDN通过智能技术生成

在阅读阿里云公众号的一篇文章MySQL索引你用对了吗?的时候, 发现了一个show index命令, 因为之前没有用到过, 特此记录一下

SHOW INDEX命令

SHOW INDEX 是 MySQL 中用于查询某个表中所有索引信息的 SQL 语句, 下面是对于结果集中各列的解读:

  • Table: 表名

  • Non_unique: 该索引是否允许重复值 0 不允许 1 允许

  • Key_name: 索引名

  • Seq_in_index: 在索引中的位置, 从1开始; 如果是单列索引则值为1, 如果是多列索引, 则按照顺序为1,2以此类推

  • Column_name: 列名

  • Cardinality: 估计的索引中唯一值的数量,对于选择合适的查询优化策略有一定参考价值。

  • Collation: 索引列的排序规则,如 A(升序)、D(降序)或 NULL(无特定顺序)。

  • Sub_part: 如果索引只覆盖了列的一部分(即对列进行了前缀索引),此列显示索引所使用的列前缀长度。

  • Packed: 是否对索引数据进行了压缩存储,以及采用的压缩类型。

  • Null: 指示索引列是否允许存储 NULL 值。

  • Index_type: 索引的类型,如 BTREE、HASH、FULLTEXT 等。

  • Comment: 注释

Cardinality解读

在 SHOW INDEX FROM 结果中,Cardinality 列表示索引的基数,即该索引列中预计存在的唯一值数量(这是个估算值)。如果索引列的值分布均匀且差异较大,那么 Cardinality 值通常较高;反之,如果列中存在大量重复值或数据分布极不均匀,Cardinality 值会较低。
查询优化器在制定执行计划时会参考 Cardinality 值。一般来说,Cardinality 越高,意味着索引的选择性越好,即索引有助于筛选出的数据量占总数据量的比例更大。

关于示例

这里就不给大家展示例子了, 大家找自己的业务表实际看一下理解起来更深刻, 我觉得这里面最重要的应该就是Cardinality这个值了

注: 本文中部分知识来源于通义灵码, 如有侵权请联系我

  • 5
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值