Я использую SP для фильтрации данных на основе местоположения и имени. Я новичок в индексировании. Я написал СП, как показано ниже, чтобы получить данные из таблицыкак оператор, использующий индекс в sql
create procedure [dbo].[Seach_University]
(
@Search varchar(100),
@SerLocation varchar(100)
)
as begin
declare @x varchar(100) = '"'[email protected]+'*"',
@y varchar(100) = '"'[email protected] +'*"'
select * from tbl_Groups where contains(Group_Name ,@x) and contains(Location,@y)
end
Этот код отлично работает, когда я отправляю ключевые слова. Проблема возникает, когда я отправляю только одно значение (либо @SerLocation, либо @search), данные не поступают, т. Е. Когда null идет.
может ли один помочь мне, таким образом, что даже если нулевое значение идет, он должен работать, как показано ниже код
select * from tbl_Groups where Group_Name like '%'[email protected]+'%' and Location like '%'[email protected]+'%'
Индексы обычно работают только в условиях LIKE, которые * привязано * к началу, например, 'FOO% ''. После добавления в ''% FOO' тривиального индекса нет. – user2864740
, поэтому я не могу использовать индекс для этого поиска? или мне нужно ответить ниже @Nihat – Srujan0228
Правильно, индекс Group_name не будет использоваться (представьте, что кто-то сказал вам найти список людей из телефонной книги, чье имя содержит «al», вы не сможете использовать алфавитный порядок - другими словами, индекс телефонной книги, вам придется сканировать все, индекс будет работать аналогичным образом). Вы можете использовать один из описанных ниже. – Nihat