SQL Server Join方式

sql server join方式

 

正文

哈希匹配:

 

前提:无

 

图标画的也很到位

 

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查询性能优化》:

 

 

(0)
上一篇 2022年3月21日
下一篇 2022年3月21日

相关推荐