zoukankan      html  css  js  c++  java
  • 1206关于索引我的疑问

    -- 第一个问题 关于索引,非唯一索引,当有相同值如何排序
    非唯一索引,值相同的话,按照行号等其他字段顺序进行排序;反正最终的结果就是有序排列,利用该关键字可以找到匹配的多条记录

    EXPLAIN
    SELECT ref_id1 FROM table1 WHERE ref_id1=10003;-- 索引覆盖
    EXPLAIN
    SELECT ref_id1,id FROM table1 WHERE ref_id1=10003;-- 同样索引覆盖,【充分证明二级索引带着主键ID】

    EXPLAIN
    SELECT * FROM table1 WHERE ref_id1=10003;-- 根据索引返回匹配的行,使用到了索引idx_ref_id1
    [这句话,如何运行的吗?
    第一步通过索引idx_ref_id1找到主键的值,
    第二步通过主键的值再利用主键索引找到叶子节点所有数据]

    TYPE:关联类型,或访问类型,即MYSQL决定的如何去查询表中的行的方式
        ALL: 全表扫描
        INDEX:根据索引的次序进行全表扫描;如果在Extra列出现“USING INDEX”表示了使用覆盖索引,而非全表扫描
        RANGE:有范围限制的根据索引实现范围扫描;扫描位置始于索引中的某一点,结束于另一点
        ref: 根据索引返回表中匹配某单个值的所有行
        eq_ref:仅返回一行,但需要额外与某个参考值做比较
        const, system: 直接返回单个行
    性能从上到下依次提升

    possible_keys:查询可能会用到的索引
    KEY: 查询中使用了的索引
    key_len: 在索引中使用的字节数
    ref: 在利用KEY字段所表示的索引完成查询时所有的列或某常量值
    ROWS:Mysql估计为找所有的目标行而需要读取的行数

    Extra:额外信息
        USING INDEX:MySQL将会使用覆盖索引,以避免访问表
        USING WHERE:MySQL服务器将在存储引擎检索后,再进行一次过滤
        USING TEMPORARY:MySQL对结果排序时会使用临时表
        USING filesort:对结果使用一个外部索引排序

    -- 第二个问题 每次理解回表查询 怎么理解
    -- 表只是一个逻辑结构
    MYISAM才有真正的物理结构 表文件,数据文件和索引文件
    INNODB也有真正的物理结构 表文件单独,数据文件和索引文件是一起的,没有单独的数据文件
    可以想象最底层的那一排就是数据文件,实际全表扫描就是将最底层的数据从头到尾的读取一遍

    -- 第三个问题 关于执行嵌套关联查询 嵌套循环 参见官网,这样理解:第一个表取第一条记录,第二个表也是取一条,然后第三个表,最后一个表取完,在进行循环

  • 相关阅读:
    软件工程--团队作业3
    软件工程--团队作业2
    软件工程第二次作业---结对编程
    软件工程第一次作业补充
    软件工程第一次作业
    用Use Case获取需求的方法是否有什么缺陷,还有什么地方需要改进?
    买卖股票的最佳时机
    爬楼梯
    删除排序数组中的重复数字
    1500802035王叔文
  • 原文地址:https://www.cnblogs.com/qcfeng/p/6138255.html
Copyright © 2011-2022 走看看