• show index 中部分字段的含义


    show index from 表名 查看某张表的索引情况

    另: SELECT * FROM information_schema.STATISTICS WHERE TABLE_NAME = "t1"show index from t1 作用相似,且会返回更多的字段信息


    创建一张测试表t1:

    CREATE TABLE `t1` (
     `id` INT ( 11 ) NOT NULL AUTO_INCREMENT,
     `name` CHAR ( 20 ) CHARACTER 
     SET utf8 NOT NULL DEFAULT '',
     `age` INT ( 11 ) DEFAULT NULL,
     `sex` enum ( 'F''M' ) CHARACTER 
     SET utf8 DEFAULT NULL,
     PRIMARY KEY ( `id` ),
     KEY `idx_name` ( `name` ),
     KEY `idx_name_age` ( `name``age` ),
     KEY `idx_name_sub` (
     `name` ( 5 )) 
    ENGINE = INNODB AUTO_INCREMENT = 6 DEFAULT CHARSET = utf8;
    • 1

    show index from t1 结果如下:

    alt

    写入几条数据:

    INSERT INTO t1 (`name`,age,sex) VALUES ('青莲居士',61,'M'); 
    INSERT INTO t1 (`name`,age,sex) VALUES ('少陵野老',58,'M'); 
    INSERT INTO t1 (`name`,age,sex) VALUES ('铁冠道人',64,'M'); 
    INSERT INTO t1 (`name`,age,sex) VALUES ('易安居士',73,'F'); 
    INSERT INTO t1 (`name`,age,sex) VALUES ('稼轩居士',67,'M');
    • 1


    alt

    1. Table


    表名称


    2. Non_unique


    如果是主键索引或唯一索引, 则为0; 如果是普通索引,则为1

    着重注意多列组成的联合索引,可以设置为唯一索引

    3. Key_name


    索引名称


    4. Seq_in_index


    该列在索引中的序号,从1开始;

    只有当存在(多列组成的)联合索引时,该字段才可能出现2,3,4等..


    如本例中,对"name"和"age"字段建了一个联合索引idx_name_age.在该索引中,name字段排在第一,age字段排在第二,所以age的Seq_in_index值为2


    5. Column_name


    列名称


    6. Collation


    collation 英[kəˈleɪʃn] 美[kəˈleɪʃn]

    n. 校对,核对;整理; (对书卷号码、编页等的) 核实,配页; 牧师职务的授予;

    [例句]Have you completed the collation of this book? 这本书你校勘完毕没有?

    列以什么方式存储在索引中, 在MySQL 8.0之前, 只有值‘A’(升序,asc)或NULL(无分类);

    8.0之后,增加了对desc的支持

    可参考: InnoDB一棵B+树,可以存放多少行数据 ,搜索降序索引


    如再新增一个字段作品数量,

    -- 在name字段后新增一个opus_num字段,类型为int(11)
    alter table t1 add column opus_num INT(11not null after `name`;
    • 1
    alt

    opus 英[ˈəʊpəs] 美[ˈoʊpəs]

    n. (按个别作曲家的创作排列的) 编号乐曲,作品编号; 主要(文学等)作品; (尤指) 大作,巨著;

    [例句]This magnum opus took ten years to complete. 这部巨著历时十年始告成。

    复数:opuses


    为该列创建一个普通索引,降序排列

    create index idx_opus on t1(opus_num desc)
    • 1

    此时的 索引信息如下:

    alt

    7. Cardinality


    cardinality

    n. 基数;集的势;

    [例句]They have the same cardinality. 它们有相同的基数。


    该字段 估计索引中不重复记录. 如果这个相对值很小,可能就要评估索引是否有意义. 即可以通过该字段,来评估索引是否合理

    cardinality字段是索引中唯一值的数目的估计值。通过运行ANALYZE TABLE或myisamchk -a可以更新。cardinality根据被存储为整数的统计数据来计数,所以即使对于小型表,该值也没有必要是精确的。基数越大,MySQL使用该索引的机会就越大。

    如 性别字段、类型字段,其可取值范围很小,称为低选择性.这类字段一般不需要建索引.


    可参考:

    MySQL中Cardinality值的介绍


    8. Sub_part


    如果列只是一部分被编入索引(即前缀索引),则该字段将不为NULL,而为被编入索引的字符数目. 如果整列被编入索引, 则为NULL.


    可参考: 前缀索引,一种优化索引大小的解决方案


    有些类似git的commit_id,全长有几十位.但仅用前6位或前8位,就可以区别和标识

    如本例中,对"name"字段建了一个前缀索引idx_name_sub,截取了"name"列的前5个字符作为索引.故而对于该索引 Sub_part的值为5


    9. Packed


    指示关键字如何被压缩. 如果没有被压缩,则为NULL.


    10. Null


    如果该列含有NULL值, 则为YES.


    11. Index_type


    使用的索引类型(BTREE, FULLTEXT, HASH, RTREE之一)

    可参考 MySQL的四种索引类型

    绝大多数情况下都是 BTREE


    12. Comment


    评注




    (以下字段为新增)


    13. Index_comment



    14. Visible



    15. Expression


    本文由 mdnice 多平台发布

  • 相关阅读:
    2018年亚太杯APMCM数学建模大赛A题老年人平衡能力的实时训练模型求解全过程文档及程序
    中国航天日特辑 | PARASOFT——从NASA JPL到航空航天的星辰大海
    情感分析与LLMs角色扮演
    pgsql在navicate导出sql再去其他库导入时会遇到的小问题
    搭建直播带货源码,商品带货销售不止直播一种方式
    竞赛 题目: 基于深度学习的疲劳驾驶检测 深度学习
    K8S核心概念之SVC(易混淆难理解知识点总结)
    C语言停车场管理系统
    常见的排序算法的时间复杂度
    游戏服务器领域的 “状态同步”、“非状态同步”
  • 原文地址:https://blog.csdn.net/techdashen/article/details/133657374