小编sac*_*lra的帖子

优化性能

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.mdxvarchar(max)列。

temp2.​​mdx 是一个类似的公式subprocess[1].dp[2]/subprocess[1].dp[5],它可以达到任何长度。temp1.mdx 包含该公式的一部分。

我想根据 #temp2.​​mdx 的每个公式获取 #temp1.mdx 的所有行,就像 temp1.mdx 包含

  1. 一种
  2. C
  3. D

和 temp2.​​mdx 包含

  1. A/B
  2. 空调*天

通过上述逻辑,我将得到 2 行 a/b 和 3 行 a/b*d 因为当你用 '' 替换 A/b 中的 A 时,它不等于 A/b,这样你就会找到所有该公式中使用的行。

temp2.​​mdx 的最大长度为 10213。

我试图在我的本地机器上运行这个查询,它是 3.1ghz 和 8gb ram。我还没有在实际服务器上尝试过。

performance sql-server query-performance

-3
推荐指数
1
解决办法
219
查看次数