【发布时间】:2017-03-10 16:47:10
【问题描述】:
我有 2 个表,其中包含一个名称部分的列,即 John Doe 有一行用于 John,一个用于 Doe。这两个表有不同的名称。我需要从一个表中获取名称部分并计算与另一个表中名称部分的差异分数。现在我正在使用一个内部和外部光标来遍历两个表中的每一个。这有效,但需要很长时间才能运行。
有没有其他方法可以加快速度?
我正在尝试做的一个例子:
表 1
Name
----
John
Doe
Jan
Smith
表 2
Name
-----
Henry
Ford
Ransom
Eli
Olds
这是我需要的:
DIFFERENCE('John','Henry')
DIFFERENCE('John','Ford')
DIFFERENCE('John','Ransom')
DIFFERENCE('John','Eli')
DIFFERENCE('John','Olds')
DIFFERENCE('Doe','Henry')
DIFFERENCE('Doe','Ford')
DIFFERENCE('Doe','Ransom')
DIFFERENCE('Doe','Eli')
DIFFERENCE('Doe','Olds')
DIFFERENCE('Jane','Henry')
DIFFERENCE('Jane','Ford')
DIFFERENCE('Jane','Ransom')
DIFFERENCE('Jane','Eli')
DIFFERENCE('Jane','Olds')
DIFFERENCE('Smith','Henry')
DIFFERENCE('Smith','Ford')
DIFFERENCE('Smith','Ransom')
DIFFERENCE('Smith','Eli')
DIFFERENCE('Smith','Olds')
现在,我将这些 DIFFERENCE 分数保存在临时表中以用于测试目的。很抱歉缺少格式,我是在这里发帖的新手。谢谢你的帮助。
【问题讨论】:
-
那么问题到底是什么?
-
我有一个包含超过 28,000 条记录的表,并且正在将它与另一个包含超过 5,000 条记录的表进行比较。除非我做错了数学运算,否则这将生成超过 160,000,000 条组合记录,并且需要 3.5 多个小时来处理。是否有更快的过程来减少可能需要的时间?谢谢。
-
@carl20236 由于您是这里的新手(顺便说一句:欢迎!),请允许我提示:您非常好心,请在(最佳)答案的投票计数器下方勾选接受检查。这将 1) 将此问题标记为已解决 2) 让追随者更容易找到最佳解决方案 3) 向回答者支付积分和 4) 向您支付积分。一旦您自己越过了 15 点边界,您还被要求对贡献进行投票。这是说谢谢的方式。快乐编码!
标签: sql sql-server tsql sql-server-2008-r2 cross-join