2014-01-20 5 views
1

В настоящее время я использую оператор IN в поле varchar. Будет ли использовать Содержит FTS в производительности?SQL Server Бесплатный текстовый поиск vs В разделе

См., Например,

Select * from Orders where City IN (‘London’ , ‘New York’) 

против

Select * from Orders where Contains (City, ‘London or New York’) 

Спасибо заранее.

ответ

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 

Создание 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 

планы выполнения для обоих запросов

enter image description here

Как вы можете увидеть запрос, который использовал FTS обошелся в 3 раза больше, чем запрос, который используется в операторе.

Сказав это, когда дело доходит до поиска языка конкретных терминов В SQL Server FTS является способ пойти, например, ищет флективных форм, синонимами и многое другое Read Here для получения дополнительной информации.

Смежные вопросы