Полнотекстовый поиск будет лучшим вариантом. может улучшить запрос, если вы можете разбить его на 4 меньших запроса, и выполнять «дорогие» только в случае необходимости. Для этого вам понадобится использовать процедурную логику c в хранимой процедуре, а не в одном запросе.
Идея состоит в том, что вы сначала выполняете «самые дешевые» запросы и сразу же возвращаетесь, если получите результаты вашего бизнеса диктует логика c; если вы не получаете результатов, вы выполняете следующий самый дешевый запрос и так далее. В зависимости от ваших данных, это может избавить вас от выполнения дорогостоящих запросов "перехватить все".
У меня нет доступа к SQL Серверу прямо сейчас, поэтому я не могу написать фактический профи c, но это будет что-то вроде:
if @LicenseNo != '' and @EmailAddress != ''
@result = select * from customer_details
where LicenseNo LIKE @LicenseNo + '%'
and EmailAddress like @EmailAddress + '%'
if %result
return %result
else
@result = select * from customer_details
where LicenseNo LIKE '%' + @LicenseNo + '%'
and EmailAddress like @EmailAddress + '%'
if %result
return
end
else
@result = select * from customer_details
where LicenseNo LIKE '%' + @LicenseNo + '%'
and EmailAddress like '%' + @EmailAddress + '%'
if %result
return
end
end