• 老毕
    2019-08-26
    如果两表关联查询,可以这样理解:

    1. ref - 双层循环,直到找出所有匹配。
    2. eq_ref - 双层循环,借助索引的唯一性,找到匹配就马上退出内层循环。
    3. const: 单层循环。

    按照循环次数递减的顺序排列它们,应该是 ref > eq_ref > const,循环次数越少,查询效率越高。
    展开

    作者回复: 对的,所以效率上来说一般是 ref < eq_ref < const

    
     12
  • leslie
    2019-08-27
    explain看的东西不止这点吧:老师是不是针对错了DB,至少现实生产这点东西的定位完全不够;老师在生产中不看表的状态就做explain么?如果表的DML过高的话,explain的操作完全没有价值。
         如果一张表的自增跑到了100万,数据量只有10万;说明这张表可能已经损坏了,第一步就是修复表而不是一开始做explain。就像我们拿到一台设备不是先去测功能,首先应当坚持设备是否完全OK再去测试,数据库不可能拿到的是一张全新的表;首先应当是表的性能评估,然后再说相关的检查吧。
           个人觉得今天的讲解的时候漏了真正的第一步:设备没坚持就开始检查设备性能了。
        
    
     7
  • 大牛凯
    2019-08-27
    SHOW PROFILE还会再有细致一点的说明么?一般看到都是sending data这个时间最长,不知道包含了哪些具体操作在里面?

    作者回复: 一般来说sending data相比于其他部分会比较长。你也可以查看不同的模块时间,比如SHOW PROFILE cpu,block_io for query ...

    
     2
  • 安静的boy
    2019-08-26
    index_merge的那个例子中,查询的type怎么是ref
    
     2
  • 听雨
    2019-08-27
    用EXPLAIN查看SQL执行顺序:如果SQL使用EXISTS嵌套子查询,按说,执行顺序是先执行主查询,再执行子查询,但是EXPLAIN出来的结果是主查询的id为1,子查询的id为2,也就是说是先执行的子查询,这是为什么呢
    
     1
  • 许童童
    2019-08-26
    你可以讲一下 ref、eq_ref 和 const 这三种类型的区别吗?查询效率有何不同?
    ref 是使用了非唯一索引
    eq_ref 是使用了主键或唯一索引,一般在两表连接查询中索引
    const 是使用了主键或唯一索引 与常量值进行比较

    查询效率 ref < eq_ref < const
    展开
    
     1
  • 土土人
    2019-08-26
    oracle是否有对应工呢?

    作者回复: 有的,比如Oracle自带的AWR工具

    
     1
  • 竹影
    2019-12-19
    多表联查的时候,SQL的执行顺序是怎样的?where后什么时候执行?
    
    
  • law
    2019-08-28
    生产环境遇到一种情况,有两个组合索引:coupon_code(tenant_id,coupon_code,platforms), idx_eq_coupon8(tenant_id,end_date,state),有个查询条件按照第二个组合索引的条件查询,但没有用到第二个索引,而是用到了第一个,麻烦老师帮忙分析下这种情况怎么定位什么原因?
    
    
  • Jack 乐
    2019-08-28
    老师,你好!百万级大表创建联合索引,导致阻塞现象,如何解决?
    
    
我们在线,来聊聊吧