Мне нужно знать, будет ли SQL Server значительно снижать производительность за использование подстановочного знака или дублирование одного и того же фильтра в предложении WHERE
.SQL Server: подстановочный знак
У меня будет 2 переменные в операторе WHERE
, которые контролируются кодом хранимой процедуры. Мне нужно знать, если эти запросы будут вызывать проблемы с производительностью
Листинг 1
declare @filter1 varchar(20)
declare @filter2 varchar(20)
(...)
set @filter2 = @filter1
(...)
select Col1, Col2, Col3
from Table1
where Col1 like @filter1 or Col1 like @filter2
Листинг 2
declare @filter1 varchar(20)
declare @filter2 varchar(20)
(...)
set @filter2 = '%'
(...)
select Col1, Col2, Col3
from Table1
where Col1 like @filter1 and Col1 like @filter2
Я знаю, вы можете спросить, почему я поворачиваюсь к таким странным кодом. Я просто имею различное количество фильтров в зависимости от первой переменной, переданной хранимым процедурам, и мне нужно произвольно назначить второй фильтр. Но иногда этот второй фильтр не нужен. Я посмотрел на использование CASE
в статье WHERE
, но, несмотря на положительные отзывы об этом портале, CASE
здесь не работает.
Возможно, вы захотите изучить динамические SQL и EXEC. – Becuzz