当前位置: 首页 > news >正文

iis7网站绑定域名2023北京一级战备开始

iis7网站绑定域名,2023北京一级战备开始,开发网站实时监控,ps做网站难吗瀚高数据库 目录 文档用途 详细信息 文档用途 剖析UNION类型子查询提升的条件和过程 详细信息 注#xff1a;图片较大#xff0c;可在浏览器新标签页打开。 SQL: SELECT * FROM score sc, LATERAL(SELECT * FROM student WHERE sno 1 UNION ALL SELECT * FROM student…瀚高数据库 目录 文档用途 详细信息 文档用途 剖析UNION类型子查询提升的条件和过程 详细信息 注图片较大可在浏览器新标签页打开。 SQL: SELECT * FROM score sc, LATERAL(SELECT * FROM student WHERE sno 1 UNION ALL SELECT * FROM student WHERE sno sc .sno) st WHERE st.sno 0;查询树结构 分析该查询树主查询包含2个RangeTblEntrysc和st其中st这个表的类型是子查询包含2个RangeTblEntry从SQL也可以看出这2个RangeTblEntry对应两个select查询按照Query结构去分层该查询树为3层。 稍微简化一下结构如下图所示 打印该SQL的执行计划 根据执行计划和查询树优化前后对比对于UNION类型的子查询提升主要是将UNION两侧子查询提升反映在查询树中即是这2个子查询类型的RangeTblEntry添加到主查询对应的rtable队列中3层查询优化为2层查询结构。 提升流程查找范围表中可以提升到父查询中的子查询。如果子查询没有特殊的特性比如分组/聚合那么我们可以将其合并到父查询的联接树中。此外简单的 UNION ALL 结构的子查询可以转换为“追加关系”。 void pull_up_subqueries(PlannerInfo *root){Assert(IsA(root-parse-jointree, FromExpr));root-parse-jointree (FromExpr *)pull_up_subqueries_recurse(root, (Node *) root-parse-jointree,NULL, NULL);Assert(IsA(root-parse-jointree, FromExpr));}jointree中包含了FROM…WHERE…所引用的表该递归结构通过pull_up_subqueries_recurse对其进行递归处理所以优化执行时先去深度遍历FromExpr中的列表中的每一项成员 if (IsA(jtnode, FromExpr)){FromExpr *f (FromExpr *) jtnode;ListCell *l;Assert(containing_appendrel NULL);foreach(l, f-fromlist){lfirst(l) pull_up_subqueries_recurse(root, lfirst(l),lowest_outer_join,NULL);}}如果RangeTblEntry是subquery类型并且满足简单子查询条件使用pull_up_simple_union_all处理该函数接受3个参数分别是查询树上下文 RangeTblRef, RangeTblEntry。 int varno ((RangeTblRef *) jtnode)-rtindex;RangeTblEntry *rte rt_fetch(varno, root-parse-rtable);if (rte-rtekind RTE_SUBQUERY is_simple_union_all(rte-subquery))return pull_up_simple_union_all(root, jtnode, rte);pull_up_simple_union_all: 根据优化后的查询树结构提升的主要目的是把三个层次变成两个层次那么如果“子子查询”中引用了顶层的列属性那么这些变量应该提升一个层次也就是调用incrementVarSublevelsUp_ rtable(rtable, -1 , 1 )。比如本例SQLSELECT * FROM student WHERE sno sc .sno sc.sno 就引用了第一个层次中的列表量,它的 Var varlevlesup 的原值是 2相对值子查询提升之后应该变成1。 2.下发LATERAL本例中是SELECT * FROM student WHERE sno 1和 ( SELECT * FROM student WERE sno sc.sno 这两个子查询都变成 LATERAL而不是只是针对引用父查询属性子查询才会拥有LATERAL语义。 if (rte-lateral){ListCell *rt;foreach(rt, rtable){RangeTblEntry *child_rte (RangeTblEntry *) lfirst(rt);Assert(child_rte-rtekind RTE_SUBQUERY);child_rte-lateral true;}}3.把第三层次的两个RangeTblEntrySELECT * FROM student WHERE sno 1和SELECT * FROM student WHERE sno sc.sno 两个子查询附加到第一层的 Query-rtable 列表中在这第3步过后后续的子查询的rtindex都将加上父查询rtindex作为偏置值。 /** Append child RTEs (and their perminfos) to parent rtable.*/CombineRangeTables(root-parse-rtable, root-parse-rteperminfos,rtable, subquery-rteperminfos);{*dst_rtable list_concat(*dst_rtable, src_rtable);...}4.开始对 subquery-setOperations 进行遍历 (pull_up_union_leaf_queries 函数)为其中的每个子查询生成一个AppendRelInfo 节点在本例中为 SELECT * FROM student WHERE sno 1〕和 (SELECT * FROM student WHERE sno sc.sno 生成两个 AppendRelInfo 节点,这种类型的节点是记录到查询树的上下文中在查询树中看不到。 SetOperationStmt *op (SetOperationStmt *) setOp;/* Recurse to reach leaf queries */pull_up_union_leaf_queries(op-larg, root, parentRTindex, setOpQuery,childRToffset);pull_up_union_leaf_queries(op-rarg, root, parentRTindex, setOpQuery,childRToffset);appinfo makeNode(AppendRelInfo);appinfo-parent_relid parentRTindex;appinfo-child_relid childRTindex;appinfo-parent_reltype InvalidOid;appinfo-child_reltype InvalidOid;make_setop_translation_list(setOpQuery, childRTindex, appinfo);appinfo-parent_reloid InvalidOid;root-append_rel_list lappend(root-append_rel_list, appinfo);简单回顾这种类型子查询流程如下图 到此为止还有一个需要解决的问题子查询提升将对应的RangeTblEntry添加到了父查询的rtable中而且过程中更新了rtindex(第4步这个新的RangeTblEntry不会在父查询的FromExpr中出现所以构造完ApendRelInfo后需要对子查询构造新的RangeTblRef填充新的rtindex, 然后执行pull_up_subqueries_recurse。 rtr makeNode(RangeTblRef);rtr-rtindex childRTindex;(void) pull_up_subqueries_recurse(root, (Node *) rtr,NULL, appinfo);最后就能得到优化后的查询树结构。
http://www.w-s-a.com/news/603301/

相关文章:

  • 谷歌提交网站入口wordpress前台自动登录
  • 规模以上工业企业的标准是什么洛阳霞光seo网络公司
  • 怎样用文本建一个网站做美容美发学校网站公司
  • 南宁企业网站建设制作芜湖网站建设推广
  • 泉州市建设局网站公示深圳建站公司好坏
  • 如何搭建网站教程一个人制作网站
  • 网站开发专业都有哪些课程广州安全教育平台账号找回
  • 网站调整方案适合平面设计师的网站
  • 免费服务器建立网站用html5做的旅游网站代码
  • 学校英语网站栏目名称WordPress禁用邮件注册
  • 手机qq网页版网站沧州手机网站开发
  • 深圳罗湖网站设计公司建设的网站属于无形资产吗
  • 网站开发python西安网站建站品牌
  • 网站开发商标属于哪一类做网站还有钱赚吗
  • 做设计的搜素材上什么网站好设计公司画册设计哪家好
  • 视频网站开发需要什么语言做ui设计一年后年薪多少
  • 网站服务器维护费用统一企业官方网站
  • 网站如何调用手机淘宝做淘宝客呼和浩特网站运营公司
  • 做推广可以上那些网站网页游戏排行榜2014前十名
  • 国外网站备案流程企业网站 流程
  • 重庆网站建设letide童程童美少儿收费价目表
  • 苏州建站仿站东莞排名推广
  • 大中小网站的区分wordpress个人主页主题
  • 商务网站建设的可行性分析包括小程序源码网免费
  • 永州网站建设收费标准重庆网站建设公司夹夹虫专业
  • python做网站多少钱wordpress 2.8
  • 深圳网站平台网站开发工作程序怎么写
  • 自己可以接单做网站吗wordpress 添加自定义按钮
  • 网站首页权重宣传页制作
  • 智能网站建设软件有哪些方面网页的建设