Sql 加快文本搜索查询大型数据集

Sql 加快文本搜索查询大型数据集,sql,sql-server,tsql,Sql,Sql Server,Tsql,嗨,我希望有人能给我小费。下面有一个查询,用于过滤#TempLogins表中的详细信息字段。“详细信息”字段是一个文本字段,其中包含多种类型的文本字符串,有些URL包含“ResultID=5”等部分,这是ResultID搜索和ResultID搜索字段中包含的内容。带有“ResultID=5”等条目的记录是我试图筛选的记录 我的问题是,查询运行时间太长。TempLogin表大约有200K条记录,TempSearch表大约有80K条记录 任何关于如何重写或加速此查询的提示都将不胜感激 enter c

嗨,我希望有人能给我小费。下面有一个查询,用于过滤#TempLogins表中的详细信息字段。“详细信息”字段是一个文本字段,其中包含多种类型的文本字符串,有些URL包含“ResultID=5”等部分,这是ResultID搜索和ResultID搜索字段中包含的内容。带有“ResultID=5”等条目的记录是我试图筛选的记录

我的问题是,查询运行时间太长。TempLogin表大约有200K条记录,TempSearch表大约有80K条记录

任何关于如何重写或加速此查询的提示都将不胜感激

enter code here: select * from #TempLogins a where exists
                      (select 1 from #TempSearch t1 where 
                                 a.detail like '%' + t1.ResultIDSearch + '%'
                                 or 
                                 a.detail like '%' + t1.ResultSetIDSearch + '%')

这是join版本,但问题是%将是表扫描
关于#TempLogins.detail的索引可能会有所帮助,但我对此表示怀疑

select distinct a.* 
  from #TempLogins a
  join #TempSearch t1 
    on a.detail like '%' + t1.ResultIDSearch + '%'
    or a.detail like '%' + t1.ResultSetIDSearch + '%';
这可能会更好

select a.* 
  from #TempLogins a
  join #TempSearch t1 
    on a.detail like '%' + t1.ResultIDSearch + '%'
UNION
select a.* 
  from #TempLogins a
  join #TempSearch t1 
    on a.detail like '%' + t1.ResultSetIDSearch + '%'

如果您可以解析ResultsTIDSearch和ResultsTIDSearch中的术语,然后在=

上加入,您可以尝试
PATINDEX
。。有时它比
快,比如%%

SELECT
    *
FROM
    #TempLogins a
WHERE
    EXISTS ( SELECT
                1
             FROM
                #TempSearch t1
             WHERE
                PATINDEX('%' + t1.ResultIDSearch + '%', a.detail) > 0           
                OR PATINDEX('%' + t1.ResultSetIDSearch + '%', a.detail) > 0           
    )

您在这些临时表上创建了哪些索引?您的查询计划是什么样子的?您在比较多少数据(如果没有存储多少数据的上下文,200k条记录毫无意义)?除了在黑暗中拍摄之外,任何人都无法提供太多的信息。但是本着在黑暗中拍摄的精神,您可能需要在#TempLogins.detail.google上创建索引,了解“覆盖索引”,并将它们添加到您的表中以进行此查询。@TabAlleman索引对类似%