【问题标题】:Can SQL Server use a fulltext index for a LIKE query?SQL Server 可以为 LIKE 查询使用全文索引吗?
【发布时间】:2019-01-04 16:11:41
【问题描述】:

我希望避免对使用 LIKE 关键字的查询进行全扫描:

SELECT * 
FROM MYTABLE 
WHERE MYCOLUMN LIKE '%WORD%'` AND PRICE < 3;

使用 SQL Server,我们可以定义全文索引并将其与CONTAINS 子句(和其他子句)一起使用。问题:我不允许更改我的查询,所以我希望服务器使用带有LIKEkeyword 的全文索引。

有可能吗?

【问题讨论】:

  • 你不能。您要么需要使用CONTAINS(带有全文索引),要么删除前导通配符;这不会提供相同的结果。将LIKE 与前导通配符一起使用会使查询不可搜索。我怀疑这是一个 XY 问题;为什么你不能使用CONTAINS?你说你不能改变你的查询;为什么?
  • 因为查询是由软件自动生成的,我无法更改此软件的代码。

标签: sql-server full-text-search sql-like full-text-indexing


【解决方案1】:

您可以使用以下技巧来提高性能:

WHERE MYCOLUMN LIKE 'WORD%' 
AND MYCOLUMN LIKE '%WORD'
AND PRICE < 3;

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-09-04
    • 1970-01-01
    • 1970-01-01
    • 2020-06-12
    • 2021-05-08
    • 1970-01-01
    相关资源
    最近更新 更多