像'%Query%'和全文searchCONTAINS查询的性能
我有一个情况,我想search一个单词 。
对于这种情况,从性能angular度来看哪个查询是好的?
Select Col1, Col2 from Table Where Col1 Like '%Search%'
要么
Select Col1, Col2 from Table Where Col1 CONTAINS(Col1,'Search')
?
全文search(使用CONTAINS)将比使用LIKE和通配符更快/更高效。 全文search(FTS)包括定义全文索引的能力,FTS可以使用。 不知道为什么你不会定义一个FTS指数,如果你打算使用function…
像左侧的通配符(IE: LIKE '%Search'
)不能使用索引(假设列存在),保证表扫描。 我还没有testing和比较,但正则expression式有相同的陷阱。 为了说明, LIKE '%Search'
和LIKE '%Search%'
不能使用索引; LIKE 'Search%'
可以使用索引。
对于一个典型的数据库,假设在search的字段上build立了适当的全文search索引,CONTAINSsearch可以更快。 LIKE
操作符的评估通常不使用索引,因此必须读取所有数据。
就像在桌上search它一样,会杀死性能。 更好地申请像CTEsearch。