Sql 视图中命中索引表的附加索引

Sql 视图中命中索引表的附加索引,sql,sql-server,full-text-search,Sql,Sql Server,Full Text Search,假设我有一个表T,其中有10多列,还有一个视图V,它选择了其中的4列。做一个 select columnA from V where columnB=x and columnC=y and (columnD like '%z%') 我还有一个覆盖非聚集索引(覆盖select和where列)。问题在于括号中的部分——两边都有通配符,这实际上使列排序不相关 创建视图的新索引(可能是聚集索引/全文索引)是否会让我受益?我知道这很可能会实现。除了额外的空间要求外,还有其他负面影响吗 还有其他关于如何进

假设我有一个表T,其中有10多列,还有一个视图V,它选择了其中的4列。做一个

select columnA from V where columnB=x and columnC=y and (columnD like '%z%')
我还有一个覆盖非聚集索引(覆盖select和where列)。问题在于括号中的部分——两边都有通配符,这实际上使列排序不相关

创建视图的新索引(可能是聚集索引/全文索引)是否会让我受益?我知道这很可能会实现。除了额外的空间要求外,还有其他负面影响吗


还有其他关于如何进行通配符搜索的想法吗?

如问题注释中所述,不允许在前面使用通配符进行全文搜索,因此全文搜索(以及它可能基于的任何其他视图)在这种情况下几乎没有帮助

另外,创建一个新的(甚至是物化的)视图似乎不会带来性能改进

工作解决方案:尽可能地并行比较。SQL Server的MAXDOP(最大并行度)提供了非常好的结果—近乎线性的改进。

您是否检查了执行计划以查看是否实际使用了索引?如果它已经被使用,我不明白为什么索引视图在这种情况下会有所帮助:“z”之前的“%”仍然会使按列查找变得不可能,无论索引是否聚集。全文索引对“z”之前的通配符也没有帮助。桌子有多大?也许仅仅按columnB和columnC进行筛选就足够有选择性了,不必麻烦使用columnD上的索引?是的,我用执行计划进行了验证-确实使用了索引。我的想法是在表的顶部有一个全文索引视图,并使用类似于CONTAINS(columnD,'z')的东西,我认为它应该像%z%一样工作。好的,SQL中的全文搜索只支持短语后面的星号,而不支持短语前面的星号。请在此查看前缀_术语的定义和说明: