【发布时间】:2014-12-17 20:51:31
【问题描述】:
我有一个场景,我需要执行以下操作:
SELECT *
FROM
[dbo].[MyTable]
WHERE
[Url] LIKE '%<some url>%';
我必须在 Url ('%<some url>%') 的开头和结尾使用两个 %(通配符),因为即使他键入部分文本,用户也应该能够搜索完整的 url。例如,如果 url 是 http://www.google.co.in 并且用户键入“goo”,则 url 必须出现在搜索结果中。 LIKE 运算符导致性能问题。 我需要一个替代方案,这样我就可以摆脱这个语句和通配符。换句话说,我不想在这种情况下使用 LIKE 语句。我尝试使用 T-SQL CONTAINS,但它并没有解决我的问题。除了可以执行模式匹配并快速为我提供结果之外,还有其他替代方法吗?
【问题讨论】:
-
它以什么方式导致性能问题?
-
我已经简化了这个问题。请不要删除帖子。
-
您需要良好的索引。如果您在该列上没有正确的索引,则不同的运算符将无法帮助您。
-
@sharpcloud - 索引并没有那么大的帮助,因为它有一个前导通配符,它仍然需要扫描它。索引可以做的最好的事情是减少正在扫描的数据的宽度。
-
全文索引可能会有所帮助。
标签: sql sql-server tsql contains sql-like