2014-02-18 90 views
0

我一直在搜索互联网,发现全文搜索通常具有更好的性能。SQL全文搜索vs. LIKE搜索性能

我按照this post上的说明在我的机器上设置了同义词表,这样我就可以使用它并更熟悉全文搜索。

我正在查看Microsoft SQL Server Management Studio 2008中的所有内容。

当我运行查询时。我注意到我的LIKE搜索速度快于我的FREETEXT搜索速度,这与我在大多数wiki网站/页面上找到的内容相矛盾。

下面是我跑的查询:

select * 
from TheThesaurus 
where freetext(TheDefinition, 'aspire') 

select * 
from TheThesaurus 
where TheDefinition like '%aspire%' 

LIKE搜索了0秒,其中FREETEXT搜索了6秒。

LIKE搜索返回70行,其中FREETEXT搜索返回94,这使得FREETEXT搜索更精确和更好的结果。

是否有什么我失踪导致FREETEXT搜索比LIKE搜索慢?

我真的很想在我的程序中使用FREETEXT搜索,因为它会返回更多的点击(收集更多数据),但速度是一个重大问题。

感谢您的帮助!

+0

你看执行计划吗? – 2014-02-18 17:42:46

+0

尝试'更新统计TheThesaurus' – Mihai

回答

0

您是否创建了全文索引?如果没有,请参阅MSDN站点上的CREATE FULLTEXT CATALOG,或者此链接引导您使用SQL 2008。http://www.codeproject.com/Articles/29237/SQL-SERVER-2008-Creating-Full-Text-Catalog-and-Ful

运行时间会有所不同的另一个原因与谓词的作用有关。 LIKE接近完全匹配。 FREETEXT函数“搜索与短语的含义相匹配的值,而不仅仅是精确的单词”,因此您的FREETEXT命令正在做更多的工作。这是从“查询Microsoft SQL Server 2012”