SQL SERVER有三种连接方式嵌套合并哈希
我对合并连接有如下疑惑:表MF_POS 主键OS_ID,OS_NO (也是聚集索引) OS_DD(非聚集索引)表TF_POS 主键OS_ID,OS_NO,ITM(这三个也是聚集索引) OS_DD(非聚集索引)查询语句:Set Statistics IO ON
select M.*,T.*
from MF_POS M
inner join TF_POS T ON M.OS_ID=T.OS_ID AND M.OS_NO=T.OS_NO
where M.OS_DD>='2009-01-01'
AND M.OS_ID='SO'
这里使用的是嵌套循环 连接方式
Set Statistics IO ON
select M.*,T.*
from MF_POS M
inner join TF_POS T ON M.OS_ID=T.OS_ID AND M.OS_NO=T.OS_NO
where T.OS_DD>='2009-01-01'
AND M.OS_ID='SO'而这里使用的是合并的连接方式查询条件不同导致连接方式的不同?
望高手解答!
我对合并连接有如下疑惑:表MF_POS 主键OS_ID,OS_NO (也是聚集索引) OS_DD(非聚集索引)表TF_POS 主键OS_ID,OS_NO,ITM(这三个也是聚集索引) OS_DD(非聚集索引)查询语句:Set Statistics IO ON
select M.*,T.*
from MF_POS M
inner join TF_POS T ON M.OS_ID=T.OS_ID AND M.OS_NO=T.OS_NO
where M.OS_DD>='2009-01-01'
AND M.OS_ID='SO'
这里使用的是嵌套循环 连接方式
Set Statistics IO ON
select M.*,T.*
from MF_POS M
inner join TF_POS T ON M.OS_ID=T.OS_ID AND M.OS_NO=T.OS_NO
where T.OS_DD>='2009-01-01'
AND M.OS_ID='SO'而这里使用的是合并的连接方式查询条件不同导致连接方式的不同?
望高手解答!
一个事TF_POS的OS_DD 实际上这两个表的值应该是一样的
或者别的一些ERP软件?
汗~!
这名称命名的。
第二个查询 T.OS_DD>='2009-01-01' AND M.OS_ID='SO' 缩小了关联左表 MF_POS 和右表 TF_POS的搜索范围;
并且两张表都有聚集索引,并且都按关联列的顺序存储,相比较而言当然是使用 MERGE 算法的开销小。
表MF_POS 主键OS_ID,OS_NO (也是聚集索引) OS_DD(非聚集索引)
表TF_POS 主键OS_ID,OS_NO,ITM(这三个也是聚集索引) OS_DD(非聚集索引) M.OS_DD>='2009-01-01' AND M.OS_ID='SO' 此过滤条件 全部来自MF_POS
T.OS_DD>='2009-01-01' AND M.OS_ID='SO'此过滤条件 全部来自MF_POS 和TF_POS
数据库查询优化时选择最优的方式!等待高手...
当把第二个查询M.OS_ID='SO' 改为T.OS_ID='SO' 等于是完全依靠TF_POS的搜索条件 缩小了右表的搜索范围; 最后也是Merge合并连接 是不是 右表的条件限定跟合并连接有某种联系啊求解??
merge join 就是我们说的合并连接啊
你既然想知道 merge join 需要什么条件,必然要了解如何执行 merge join,也就是说 merge 算法。
merge 算法与合并排序算法有相同之处,理解了如何合并排序,就可以理解如何 merge join。
我想合并排序算法,你在数据结构中一定有学过。