题
快速的注意
所以,为我写的问题,下面我找到了一种方法来解决它自己。我想我仍然张贴的问题,因为:
- 有人可能会发现它很有用。
- 我不了解太多,为什么它的工作。
无论如何固定码(参见答)。
我原来写道:
我已经花了年龄在谷歌上搜索这一点,可以找到很多相关的答案,但没有完全匹配我的问题。
我运行代码下面对一个SQL服务器(10)数据库和执行速度非常快。执行计划,它使用涉及一散列加入。
然后,我再次运行,而此时取消第一线的两个(声明,并设置线),并且还删除'+1旁y。[日期]和取消'+@反'.现在的查询需要年龄(在年龄)来完成执行计划,而不是使用嵌套的循环。注意我仍然只是添加一个日期,但是用一个变量,而不是一个恒定不变。
问题是:我可以查询使用@计数器使用的散列加入,而不是一套循环?
(一点的背景:我想要做的就是松散地匹配。[日期]和y。[日期],以便它们匹配,如果他们在规定的天数。天数的查询使用的是从一个领域中的另一个表中。我试图使用datediff()第一abs()以及不到,但我肯定这将会一直使用嵌套的循环。(它不会时,我尝试也无妨!)
我试图做的一切中提到的各种参数嗅闻的文章,但他们并没有改变的事情。无论如何我不是在运行这样一个存储的过程。我猜有些事情要做到与指数在[日期]的领域。)
-- DECLARE @COUNTER INT
-- SET @COUNTER = 1
BEGIN
SELECT
x.[line id]
, y.[line id]
FROM
lines1 AS x
JOIN lines2 AS y ON (
x.[in date] = y.[in date] + 1 -- + @COUNTER
AND x.[country] = y.[country]
)
WHERE
x.[country] = 'USA'
END
解决方案
问题是:我可以查询使用@计数器使用的散列加入,而不是一套循环?
是的。你可以使用一个加入暗示的力量:
INNER HASH JOIN
不隶属于 StackOverflow