以下哪个查询更快(LIKE vs CONTAINS)?
SELECT * FROM table WHERE Column LIKE '%test%';
Run Code Online (Sandbox Code Playgroud)
要么
SELECT * FROM table WHERE Contains(Column, "test");
Run Code Online (Sandbox Code Playgroud) 我有一些列EntityName,我希望用户能够通过输入以空格分隔的单词来搜索名称.该空间被隐式地视为"AND"运算符,这意味着返回的行必须具有指定的所有单词,并且不一定按给定顺序排列.
例如,如果我们有这样的行:
当用户输入:me you,或you me(结果必须等效)时,结果包含第2行和第3行.
我知道我可以这样:
WHERE Col1 LIKE '%' + word1 + '%'
AND Col1 LIKE '%' + word2 + '%'
Run Code Online (Sandbox Code Playgroud)
但我想知道是否有更优化的解决方案.
这CONTAINS将需要一个全文索引,(由于各种原因)不是一个选项.
也许Sql2008有一些针对这些案例的内置半隐藏解决方案?
我有兴趣做这样的问题,我只得到结果,如果列实际上包含给它的所有单词.
举例来说,如果我有两列,一个是时间戳,另一个是天气,我想只有在天气时间戳cloudy,rainy,snowy,而不是它是否只是cloudy,rainy.上面的一个例子有点像:
SELECT distinct timestamp FROM mytable
WHERE Weather LIKE 'snowy'
OR Weather LIKE 'cloudy'
OR Weather LIKE 'rainy'
Run Code Online (Sandbox Code Playgroud)
哪个会返回类似的东西:
2017-09-22 snowy
2017-09-22 snowy
2017-09-22 cloudy
2017-09-22 rainy
2017-09-22 cloudy
Run Code Online (Sandbox Code Playgroud)
但不是任何结果from 2017-09-21,因为它可能只是那一天snowy和rainy那一天等.
我做的上面的示例查询将返回所有时间戳,只要天气符合条件.