类似'%Query%'的性能与全文搜索CONTAINS查询

时间:2010-07-09 15:17:16

标签: sql database performance full-text-search sql-like

我有一种情况,我想搜索一个单词

对于那种情况,从性能的角度来看哪个查询会很好?

Select Col1, Col2 from Table Where Col1 Like '%Search%'

Select Col1, Col2 from Table Where Col1 CONTAINS(Col1,'Search')

3 个答案:

答案 0 :(得分:39)

全文搜索(使用CONTAINS)比使用带通配符的LIKE更快/更有效。全文搜索(FTS)包括定义FTS可以使用的全文索引的功能。 Dunno如果你打算使用这个功能,你为什么不定义FTS索引......

LIKE与左侧的通配符(IE:LIKE '%Search')不能使用索引(假设该列存在一个),保证表扫描。我没有测试过&比较,但正则表达式有相同的陷阱。为了澄清,LIKE '%Search'LIKE '%Search%'可以使用索引; LIKE 'Search%'可以使用索引。

答案 1 :(得分:6)

对于典型的数据库,假设在搜索的字段上构建了适当的全文搜索索引,则CONTAINS搜索可以更快。 LIKE运算符的求值通常不使用索引,因此必须读取所有数据。

答案 2 :(得分:-1)

就像在桌面上搜索它一样,会杀死性能。 最好在CTE上应用类似搜索。