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

dot*_*uts 40 sql database performance full-text-search sql-like

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

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

Select Col1, Col2 from Table Where Col1 Like '%Search%'
Run Code Online (Sandbox Code Playgroud)

要么

Select Col1, Col2 from Table Where Col1 CONTAINS(Col1,'Search')
Run Code Online (Sandbox Code Playgroud)

OMG*_*ies 39

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

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

  • 在MS SQL Server中,需要全文索引才能使用CONTAINS. (4认同)

Mar*_*ins 6

对于典型的数据库,假设在搜索的字段上构建了适当的全文搜索索引,则CONTAINS搜索可以更快.LIKE操作员的评估通常不使用索引,因此必须读取所有数据.