使用like语句的SQL Azure索引性能

时间:2013-02-07 11:32:26

标签: sql azure-sql-database

我有一个表格,其中包含nvarchar(450)类型的基于文本的列,我为该列创建了一个非聚集索引:

CREATE NONCLUSTERED INDEX [myindexname] ON [myschema].[mytable] 
(
    [mycolumn] ASC
)

执行以下查询时出现问题:

select 
    .... 
where
    .... 
    mycolumn like '%something%'

如果我尝试在没有第一个%的情况下进行查询,那么索引的工作速度非常快,但使用初始%时,它需要花费大量时间。

我知道索引基础知识建议不要在where clausules中使用initial%,但我无法从查询中删除它。我想知道是否有任何改进索引的选项(我现在无法更改查询)。

注意:解释计划显示对索引的正确访问。

2 个答案:

答案 0 :(得分:1)

索引按列mycolumn按字母顺序排序。因此,当您在前面查找带有%的子字符串时,查询引擎必须扫描整个表/索引。

使这种查询更快的唯一方法是使用全文搜索。

答案 1 :(得分:0)

全文搜索现在在SQL DB v12中预览。这完全适合您的情况。