Select *
from #temp1
join #temp2 on #temp2.mdx <> replace(#temp2.mdx,#temp1.mdx,'')
Run Code Online (Sandbox Code Playgroud)
上面的查询大约需要 30 分钟才能执行。我想减少这个时间。
#temp1 包含 100 000 条记录#temp2 包含 4 000 条记录#temp1.mdx并#temp2.mdx都varchar(max)列。temp2.mdx 是一个类似的公式subprocess[1].dp[2]/subprocess[1].dp[5],它可以达到任何长度。temp1.mdx 包含该公式的一部分。
我想根据 #temp2.mdx 的每个公式获取 #temp1.mdx 的所有行,就像 temp1.mdx 包含
和 temp2.mdx 包含
通过上述逻辑,我将得到 2 行 a/b 和 3 行 a/b*d 因为当你用 '' 替换 A/b 中的 A 时,它不等于 A/b,这样你就会找到所有该公式中使用的行。
temp2.mdx 的最大长度为 10213。
我试图在我的本地机器上运行这个查询,它是 3.1ghz 和 8gb ram。我还没有在实际服务器上尝试过。