从一个具有客户ID的表和另一个表进行文本搜索的SQL SERVER CODE

时间:2019-01-14 17:58:40

标签: sql sql-server sql-server-2008

我有以下代码,但运行速度很慢。能不能请你 让我知道您可能有什么建议吗?

SELECT TOP (1000) [W].[CUST] 
,[M].[Add_Text]
    FROM [XXXX].[dbo].[CUST] AS W
    JOIN [XXXX].[dbo].[TRANS] As M
        ON [M].[Add_Text] LIKE '%' + [W].[CUST] + '%'

因此,它正在CUST表下查找任何CUST条目,并将其与Add_Text匹配,因为ID是作为Add_Text的一部分嵌入的,并且没有其他方法可以连接这些表。

感谢您的宝贵时间。

1 个答案:

答案 0 :(得分:1)

主要原因是LIKE '%' + [W].[CUST] + '%'这部分

这不是globby,这意味着无法使用索引。参见This is a demo

如果您不关心前面的模糊匹配,可以通过删除开头的%来加快速度。

除此之外,我们需要查看执行计划。但是这里有一些随机的潜力:

  • 过时的统计信息
  • 小型服务器(内存/ CPU)
  • 内部碎片