I have a table with 117000 or so records. I need to perform a search that checks 3 separate fields for a given string pattern.
My where clause is as follows:
If you can't use FullTextSearch you can increase speed in 10 times. Do next:
1 Add calculated field:
alter table TableName
add CalculatedColumnName as upper(Column1 + '|' + Column2...) collate Latin1_General_100_Bin2
persisted;
2 Add index for calculated field:
create nonclustered index IDX_TableName_CalculatedColumnName
on TableName(CalculatedColumnName);
3 Change your query text
select count(*)
from TableName
where CalculatedColumnName like '%' + upper(@ParameterValue) + '%' collate Latin1_General_100_Bin2
Source: http://aboutsqlserver.com/2015/01/20/optimizing-substring-search-performance-in-sql-server