美文网首页
执行计划

执行计划

作者: 策马踏清风 | 来源:发表于2021-04-02 09:23 被阅读0次

    key_len

    • 表示索引使用的字节数,可通过计算查询中使用的索引长度。不损失精度准确性情况下,越短越好
    • 显示的是值为索引字段的最大可能长度,而不是实际长度,即根据表定义计算得出的

    key_len字符型

    类型|大小|用法
    CHAR|0-255|定长字符串
    WARCHAR|0-65535|变长字符串

    • CHAR UTF-8一个字符大小为3
    • CHAR UTF-8如果允许为null长度+1
    • VARCHAR UTF-8CHAR的基础上+2表示变长的大小

    key_len数值型

    类型|大小|有符号范围
    TINYINT|1|-128,127
    SMALLINT|2|-3276,32767
    MEDIUMINT|3|-8388608,8388707
    INT/INTEGER|4|-2147483648,2147483647
    BIGINT|8|
    FLOAT|4|
    DOUBLE|8|

    key_len日期

    类型|大小
    DATE|3
    TIME|3
    YEAR|1
    DATETIME|8
    TIMESTAMP|4

    • datetime5.6中长度是5个字节
    • datetime5.5中长度是8个字节

    key_len总结

    • 变长需要额外2个字节记录长度
    • null需要1个字节的额外空间,索引最好不要null
    • 复合索引最左前缀的特性,key_len可以看复合索引是否全部使用

    ref

    • 显示索引的那一列被使用了,如果有可能,是一个常数。那些列或者常量被用于查找索引列上的值。
    • const表示使用了常量
    • db.table.id那个数据库的那个表的那个字段使用了索引

    rows

    • 根据表信息统计和索引选用,估算找到信息大致所需读取的行

    Extra

    • 包含护士和在其他列中显示但十分重要的信息
    • Using filesort使用文件排序,即没有用到索引,需要使用外部索引,进利用表内索引无法按顺序读取。此时需要在语句中加上索引的wheregroup by...
    • Using temporary使用了临时表用于加快查询,在group by最左边加入where in的字段,可以消除临时表。子查询优化成连表...
    • Using index覆盖索引,查询的所有字段都是索引,就可以直接从索引读取。
    • Using where使用了where查询

    type

    效率顺序,最好是ref以上

    • system
    • const
    • eq_ref
    • ref 使用了条件索引
    • range
    • index 扫描了整个索引文件(全表扫描的一种)
    • ALL

    相关文章

      网友评论

          本文标题:执行计划

          本文链接:https://www.haomeiwen.com/subject/xfyybktx.html