我正在寻找存储在名为“EmailKeywords”的表中的几个关键字的外观,这些关键字在通过变量@Searchtext 传递的搜索字符串中。我通过下面编写的存储过程完成了这一点,它通常可以正常工作。但是要查找许多关键字,这需要花费大量时间,因为我必须使用每个关键字遍历搜索文本。
有人知道如何加快搜索速度吗?欢迎任何提示。
ALTER PROCEDURE BodyTextLookForKeywords
@Searchtext ntext
AS
DECLARE @Found int = 0
DECLARE @Keyword nvarchar(30)
-- Loop through all the listed key words
DECLARE SearchCursor Cursor For SELECT Searchword from EmailKeywords For Read Only
Open SearchCursor
While (0=0) Begin
Fetch Next
From SearchCursor
Into @Keyword
If (@@Fetch_Status <> 0)
Break
Else
Begin
Set @Found = (SELECT PATINDEX('%' + @Keyword+ '%', @Searchtext))
If @Found > 0 Break
End
End
Close SearchCursor
Deallocate SearchCursor
If @Found=0 select 0 as SResult else select 1 as SResult