欢迎来到Doc100.Net免费学习资源知识分享平台!
您的位置:首页 > 程序异常 >

sql server join 形式

更新时间: 2014-01-05 02:07:58 责任编辑: Author_N1

 

SQL Server Join 方式

 SQL Server Join 方式

引子

参加查询计划培训后,发现数据库绝对不是“增删改查”那么简单,即使来从业10几年的专家,也不敢说自己数据库多么精通。通过大家交流后发现即使selectcount(*) 都会产生不一样的结果。

 

培训的时候讲到了很多执行计划的图标,其中就三个图标的含义,在不同的文章解释一大堆话,而且看到有些似懂非懂的,直至看到《看懂SqlServer查询计划》中的伪码才恍然大悟。

 

URL:http://www.cnblogs.com/fish-li/archive/2011/06/06/2073626.html#_label1

 

 

所以想用伪码表达一下其他两个方式。

正文

哈希匹配:

前提:无

 

 

 

图标画的也很到位

 

 

foreach(row  r1  in  outer table)

{

    HashTable (Hash(r1),r1);

}

 

foreach(row  r2  in  innertable)

{

If(HashTable.contians(Hash(r2)))

  output(HashTable (Hash(r2), r2)

}

 

合并连接:

 

前提:两个连接字段是排序的

 

 

 

图标画的也很到位

 

Int  i=0;

Int  j=0;

for( ; i< outer Table.count;)

{

r1=outer table[i];

for(;j< inner Table.count ;)

{

        if(r1= r2 )  

{

output(r1, r2);

j++;

}

 

        if(r1>r2)   

{

j++;

  continue;

}

 

        if(r1<r2)

        {

          I++;

          break;

        }

    }

}

 

 

 

 

嵌套循环:

 

 

 

图标画的也很到位

 

 

foreach(row  r1  in  outer table)

{

foreach(row  r2  in  inner table)

{

        if( r1, r2 符合匹配条件 )

            output(r1, r2);

    }

}

 

嵌套循环伪码来自上面提到的文章

 

下图摘自《SqlServer2008查询性能优化》:

 

 

上一篇:上一篇
下一篇:下一篇

 

随机推荐程序问答结果

 

 

如对文章有任何疑问请提交到问题反馈,或者您对内容不满意,请您反馈给我们DOC100.NET论坛发贴求解。
DOC100.NET资源网,机器学习分类整理更新日期::2014-01-05 02:07:58
如需转载,请注明文章出处和来源网址:http://www.doc100.net/bugs/t/6012/
本文WWW.DOC100.NET DOC100.NET版权所有。