关于如何压缩此查询的想法?
select [gp1].[sID]
from
(
select [ftsIndexWordOnce].[sID], [ftsIndexWordOnce].[wordID]
from [ftsIndexWordOnce] with (nolock)
Join [FTSindex] with (nolock)
On [FTSindex].[sID] = [ftsIndexWordOnce].[sID]
And [FTSindex].[wordID] = [ftsIndexWordOnce].[wordID]
And [FTSindex].[wordPOS] <= '1000'
join [FTSwordDef] with (nolock)
on [ftsIndexWordOnce].[wordID] = [FTSwordDef].[ID]
and [FTSwordDef].[word] in ('capital','bank')
group by [ftsIndexWordOnce].[sID], [ftsIndexWordOnce].[wordID]
) [gp1]
group by [gp1].[sID]
having count(*) = 2
PK [ftsIndexWordOnce] 是 [sID],[wordID]
PK [FTSindex] 是 [sID],[wordPos]
以下不是问题的一部分。
这只是背景。
基本查询是
select [ftsIndexWordOnce].[sID]
from [ftsIndexWordOnce] with (nolock)
join [FTSwordDef] with (nolock)
on [ftsIndexWordOnce].[wordID] = [FTSwordDef].[ID]
and [FTSwordDef].[word] in ('capital','bank')
group by [ftsIndexWordOnce].[sID]
having count(*) = 2
order by [ftsIndexWordOnce].[sID]
这会找到包含这两个单词的文档。
问题查询将此扩展到 1000 个单词中的这两个单词。