PostgreSQL 源码解读(28)- 查询语句#13(查询优化-上拉子链接#3)

PostgreSQL 源码解读(28)- 查询语句#13(查询优化-上拉子链接#3),第1张

本节简单介绍了PG查询逻辑优化中的子查询链接(subLink),以EXISTS子链接为例介绍了子查询链接上拉主函数处理逻辑以及使用gdb跟踪分析。

上一节介绍了ANY子链接,本节介绍了EXISTS子链接

为便于方便解析,根据日志分析,得出查询树如下图所示:

convert_EXISTS_sublink_to_join函数源码:

相关数据结构

1、Var

XX_one_pos

依赖的函数

simplify_EXISTS_query

OffsetVarNodes

IncrementVarSublevelsUp

IncrementVarSublevelsUp

pull_varnos

contain_vars_of_level

query_tree_walker

OffsetVarNodes_walker

query_or_expression_tree_walker

pull_varnos_walker

contain_vars_of_level_walker

expression_tree_walker

#include<stdioh>

void main()

{

int a[]={1,2,3,4,5,6,7};

int b[7],i,j,count=0,max=0,maxflag;

    for(i=0;i<7;i++)

scanf("%d",&b[i]);

    i=0;

while(i<7)

{

j=0;

count=0;

if(b[i]==a[j])

while(i<7 && j<7 && b[i]==a[j]) i++,j++,count++;

else

i++;

if(max<count)  {max =count;maxflag=i;}

}

count = max;

if(count==7) printf("特等奖\n");

else if(count==6)

{

if(maxflag==7)

printf("二等奖\n");

else

printf("一等奖\n");

}

else if(count==5)

{

if(maxflag==7)

printf("三等奖\n");

else

printf("二等奖\n");

}

else if(count==4)

{

if(maxflag==7)

printf("四等奖\n");

else

printf("三等奖\n");

}

else if(count==3)

{

if(maxflag==7)

printf("五等奖\n");

else

printf("四等奖\n");

}

else if(count==2 && maxflag!=7)

printf("五等奖\n");

else 

printf("没中奖\n");

}

以上就是关于PostgreSQL 源码解读(28)- 查询语句#13(查询优化-上拉子链接#3)全部的内容,包括:PostgreSQL 源码解读(28)- 查询语句#13(查询优化-上拉子链接#3)、c语言彩票兑奖程序、等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/zz/10215544.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2023-05-06
下一篇2023-05-06

发表评论

登录后才能评论

评论列表(0条)

    保存