在 SQL Server 2008 R2 中,我有一个看起来像的查询
create stored procedure give_me_art @filter varchar(15),@skl_id int
begin
select
id,naziv,sifra,isnull(lager.kolicina,0) as lager
from art
left outer join lager on art.id=lager.art_id and lager.skl_id=@skl_id
where sifra like '%'+@filter+'%' or naziv like '%'+@filter+'
end
我在列 naziv 和列 sifra 上有一个索引。
我正在考虑将此查询更改为全文搜索。表艺术有大约 150K 条记录,我的主要目标是从 SQL Server 获得更快的响应,因为这种查询在日常工作中很常见。
如果我在这两列上创建全文索引并重新设计我的查询以使用全文索引,这个查询的性能会发生什么变化?
在很大程度上,这将取决于 @filter 是一个词还是一组词。全文索引实质上将列的内容分解为单个单词,并让您搜索单词(单词组)或同义词等。随着这些事情的进行,150k 行真的不是那么多,但是您很可能会看到一些性能提升,同样取决于@filter 是什么。我还会仔细检查您的其余索引。例如,一个在 art.id 上,一个在 lager.art_id 和 lager.skl_id 上。还考虑到你返回的列有多少(假设在真实查询中是这种情况而不仅仅是这个例子)你可以考虑通过“包括”(查看 CREATE INDEX 中的关键字 INCLUDE)使它们覆盖索引你的额外字段指标。