SQL Server 2005合并联接算法(二)
2008-8-26 选择字号:
大 |
中 |
小
重启数据库服务,查看成本:

执行结果:
(10468 行受影响) 表’workflowinfo1’。扫描计数1,逻辑读取3527 次,物理读取1 次,预读3528 次,lob 逻辑读取0 次,lob 物理读取0 次,lob 预读0 次。 表’workflowbase1’。扫描计数1,逻辑读取1571 次,物理读取0 次,预读1624 次,lob 逻辑读取0 次,lob 物理读取0 次,lob 预读0 次。 (10468 行受影响) 表’workflowbase1’。扫描计数3,逻辑读取1571 次,物理读取0 次,预读0 次,lob 逻辑读取0 次,lob 物理读取0 次,lob 预读0 次。 表’workflowinfo1’。扫描计数3,逻辑读取3886 次,物理读取0 次,预读0 次,lob 逻辑读取0 次,lob 物理读取0 次,lob 预读0 次。 表’Worktable’。扫描计数0,逻辑读取0 次,物理读取0 次,预读0 次,lob 逻辑读取0 次,lob 物理读取0 次,lob 预读0 次。 |
这,时,Merge算法比Hash算法少了357次IO。这时发现,成本对比,合并连接要优于hash连接,排序使用了B-tree索引的排序,大表workflowinfo1就没有排序操作。
这里验证了上面的一句话:
如果数据量很大且能够从现有 B 树索引中获得预排序的所需数据,则合并联接通常是最快的可用联接算法。

SQL Server 2005合并联接算法
SQL Server 2005合并联接算法(一)
SQL Server 2005合并联接算法(二)
SQL Server 2005合并联接算法(三)
原文出处:http://www.cnblogs.com/zping/archive/2008/08/10/1264705.html