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但它没有解决我的问题.除了可以执行模式匹配并快速提供结果之外,还有其他可用选择吗?
使用%开始类似会导致扫描.没有绕过它.它必须评估每个价值.
如果索引列,则应该是索引(而不是表)扫描.
您没有不会导致扫描的替代方案.
Charindex和patindex是替代品,但仍会扫描而不能解决性能问题.
你能将组件拆分成一个单独的表吗?
www
google
co
in
然后像'goo%'一样搜索?
这将使用索引,因为它不以%开头.
更好的是你可以搜索'谷歌'并获得索引搜索.
并且你希望在该表中具有唯一的字符串,并在Int PK上使用单独的连接,因此它不会返回多个www.
可疑的FullText包含速度并不快,因为FullText将URL保留为一个单词.
| 归档时间: |
|
| 查看次数: |
19831 次 |
| 最近记录: |