我目前在varchar字段上使用IN子句。使用FTS的Contains会有助于提高性能吗?
例如
Select * from Orders where City IN (‘London’ , ‘New York’)
VS
Select * from Orders where Contains (City, ‘London or New York’)
提前致谢。
答案 0 :(得分:1)
表格定义
CREATE TABLE Orders(ID INT PRIMARY KEY NOT NULL IDENTITY(1,1),City VARCHAR(100))
GO
INSERT INTO Orders
VALUES ('London'),('Newyork'),('Paris'),('Manchester')
,('Liverpool'),('Sheffield'),('Bolton')
GO
使用ID作为键在城市列上创建FTS
Used SSMS to create FTS Index.
<强>查询强>
-- Query 1
Select * from Orders
where City IN ('London' , 'NewYork')
GO
-- Query 2
Select * from Orders where
Contains (City, '"London" or "NewYork"')
GO
两个查询的执行计划
正如您所看到的,使用FTS的查询比使用IN运算符的查询花费了3倍。
说到这一点,当谈到在sql server中找到语言特定术语时,FTS是要走的路,例如寻找Inflectional表单,Synonymous以及更多 Read Here 以获取更多信息信息。