• MySql常问面试题


    索引

    1.执行计划各个字段含义:
    id: 表示查询中select子句或者操作表的顺序,id的值越大,代表优先级越高,越先执行
    select_type :select的查询类型:SIMPLE,PRIMARY,SUBQUERY,DERIVED,UNION,UNION REUSLT
    table: 表名
    partitions:查询的分区信息
    type:查询时的类型 11种
    *system:表有且仅有一条记录
    *const:查询时命中主键或者unique唯一索引,或者被连接的部分是一个const
    *eq_ref:查询时命中主键或unique key
    *ref:查询时使用非唯一索引
    *ref_or_null:使用非唯一索引并且包含null
    *index_merge:使用了索引合并优化,查询使用了两个以上的索引,查询如果出现索引合并,往往可以考虑使用联合索引
    *unique_subquery:子查询返回不重复集合
    *index_subquery:子查询返回重复值
    *range:在索引上进行范围选择
    *index:遍历索引树读取
    *all:全表扫描
    possible_keys:可能使用的索引
    key:实际使用的索引
    key_len:索引长度字节数
    ref: const,func,null,字段名
    rows:估算找到所需记录需要读取的行数
    filtered:符合条件的记录数据量的比例
    extra:6+2种
    using index 使用了覆盖索引,即从辅助索引即获得了所有信息
    using where:没有使用索引,通过where来进行条件过滤
    using temporary:使用临时表存储,一般在排序或者分组查询时用到
    using filesort:表示无法利用索引完成的排序操作
    using join buffer:连表查询时,连接条件没有使用索引,需要有一个连接缓冲区来存储结果
    impossible where: 使用了不正确的where
    no table user: 没有使用 from子句

    2.聚簇索引和非聚簇索引
    聚簇索引
    特点:1.能够快速的访问针对范围值的查询;2.它对于主键的排序查找和范围查找非常快
    非聚簇索引
    特点:不包含行记录的全部数据,索引行中包含一个书签,根据书签去innodb中查找相应行

    3.Cardinality值:索引中唯一数目的估计值 观察索引的高选择性
    cardinality值的更新:
    1.表中1/16的数据已经发生变化
    2.stat_modified_counter >2000000000
    cardinality值的获取:对表中8个叶节点进行采样,然后进行预估

    1. 联合索引
      使用联合索引的时机:需要多个查询条件
      好处:对多个键值进行了排序,可以避免排序操作

    5.index_merge

    6.优化器不适用索引的情况
    辅助索引的范围查找无法进行索引覆盖

    7.mysql索引优化和查询优化
    MRR优化 Using MRR 辅助索引->主键排序->减少页面替换
    ICP优化 Using index condition 在根据索引查找是进行where条件判断

  • 相关阅读:
    算法提高 约数个数
    算法提高 第二大整数
    算法提高 逆序排列
    算法提高 c++_ch02_01
    算法提高 日期计算
    程序员教你设置密码
    fzu 2184 逆序数还原
    fzu 2146 Easy Game
    算法训练 区间k大数查询
    算法训练 最大最小公倍数
  • 原文地址:https://www.cnblogs.com/zhouyu0-0/p/14820264.html
Copyright © 2020-2023  润新知