このクエリを要約する方法についての考えはありますか?
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 語の両方の語に拡張します。