是否有替代T-SQL中的LIKE语句?

Sac*_*ngh 2 sql t-sql sql-server contains sql-like

我有一个场景,我需要执行以下操作:

SELECT *
FROM
[dbo].[MyTable]
WHERE
[Url] LIKE '%<some url>%';
Run Code Online (Sandbox Code Playgroud)

我必须在Url('%<some url>%')的开头和结尾使用两个%(通配符),因为用户应该能够搜索完整的URL,即使他键入了部分文本.例如,如果网址为http://www.google.co.in且用户输入"goo",则网址必须出现在搜索结果中.LIKE运营商正在导致性能问题.我需要一个替代方案,以便我可以摆脱这个声明和通配符.换句话说,我不想在这种情况下使用LIKE语句.我尝试使用T-SQL,CONTAINS但它没有解决我的问题.除了可以执行模式匹配并快速提供结果之外,还有其他可用选择吗?

pap*_*zzo 8

使用%开始类似会导致扫描.没有绕过它.它必须评估每个价值.

如果索引列,则应该是索引(而不是表)扫描.

您没有不会导致扫描的替代方案.
Charindex和patindex是替代品,但仍会扫描而不能解决性能问题.

你能将组件拆分成一个单独的表吗?
www
google
co
in

然后像'goo%'一样搜索?
这将使用索引,因为它不以%开头.

更好的是你可以搜索'谷歌'并获得索引搜索.

并且你希望在该表中具有唯一的字符串,并在Int PK上使用单独的连接,因此它不会返回多个www.

可疑的FullText包含速度并不快,因为FullText将URL保留为一个单词.