我有一种情况,我想搜索一个单词。
对于那种情况,从性能的角度来看哪个查询会很好?
Select Col1, Col2 from Table Where Col1 Like '%Search%'
或
Select Col1, Col2 from Table Where Col1 CONTAINS(Col1,'Search')
答案 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上应用类似搜索。