全文搜索与LIKE
我的问题是关于使用全文。我知道像以%开头的查询从不使用索引:
SELECT * from customer where name like %username%
如果我使用全文来进行此查询可以ı采取更好的性能? SQL Server是否可以为%username%等查询使用全文索引优势?
没有找到相关结果
已邀请:
5 个回复
烫珊
,也不使用全文索引。 答案很长 在一般情况下,没有与LIKE运算符等效的全文。虽然LIKE可以处理一串字符,并且可以对目标内的任何内容执行任意通配符匹配,但是设计全文仅对整个单词/术语进行操作。 (这是一个轻微的简化,但它会为了这个答案的目的。) SQL Server全文支持带有前缀term运算符的LIKE子集。来自docs(http://msdn.microsoft.com/en-us/library/ms187787.aspx):
将返回名为chainsaw,chainmail等的产品。从功能上讲,这不会超过标准的
运算符(
),只要列被索引,使用LIKE作为前缀搜索应该给出可接受的性能。 LIKE运算符允许您将通配符放在任何位置,例如
,如您所述,这可以防止使用索引。但是使用全文,星号只能出现在查询字词的末尾,所以这对你没有帮助。 使用LIKE,可以通过创建新列,将其值设置为与目标列相反并将其编入索引来执行有效的后缀搜索。然后,您可以查询如下:
返回名称以“chain”结尾的产品。 我想你可以结合前缀和反向后缀黑客:
它实现了一个(可能)索引的中缀搜索,但它并不是特别漂亮(我从未测试过这个以查看查询优化器是否会在其计划中使用这两个索引)。
稀瓣囊
索引,全文或没有全文应该工作。但
永远不会使用索引。这将是耗时的查询。
靛取糕奖穿
骨乏唯瓜
娜拐赐巫潭