暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

sql advisor读书笔记

dba笔记 2018-03-16
945

项目 GitHub 地址:https://github.com/Meituan-Dianping/SQLAdvisor


结构流程图


main -> where -> cardinality desc

                                    |

                             parse join

                                    |

                             group by

                                    |

                             order by

                                    |

                             过滤重复索引       





Mysql 中联接SQL语句中,ON子句的语法格式为:table1.column_name = table2.column_name。

当模式设计对联接表的列采用了相同的命名样式时,就可以使用 USING 语法来简化 ON 语法,格式为:USING(column_name)。


  1. [sql]  

  2. SELECT f.color, c.is_primary, c.is_dark, c.is_rainbow    

  3. FROM flags f 

  4. INNER JOIN color c ON f.color = c.color    

  5. WHERE f.country = 'China';    


  1. [sql]  

  2. SELECT f.color, c.is_primary, c.is_dark, c.is_rainbow    

  3. FROM flags f    

  4. INNER JOIN color c USING(color)    

  5. WHERE f.country = 'China';    


二叉树


二叉树在图论中是这样定义的:二叉树是一个连通的无环图,并且每一个顶点的度不大于3。有根二叉树还要满足根结点的度不大于2。有了根结点之后,每个顶点定义了唯一的父结点,和最多2个子结点。然而,没有足够的信息来区分左结点和右结点。如果不考虑连通性,允许图中有多个连通分量,这样的结构叫做森林。



2.1 join 处理

  1. join语法分为两种:join on 和 join using。并且join on 有时会存在where条件中。

  2. 分析Join条件首先会得到一个nested_join的table list,通过判断它的join_using_fields 字段是否为空来区分Join on 与Join using。

  3. 生成的table list 以二叉树的形式进行存储,以后序遍历的方式对二叉树进行遍历。

  4. 生成内部解析树时,right join 会转换成 left Join

  5. join条件会存在当层的叶子节点上,如果左右节点都是叶子节点,会存在右叶子节点

  6. 每一个非叶子节点代表一次Join的结果。




本文分享自微信公众号 - dba笔记,如有侵权,请联系 service001@enmotech.com 删除。
最后修改时间:2019-12-18 15:44:28
文章转载自dba笔记,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论