から列にすることにより、フィルタ、Oracle 11gのテキスト:コンポジット・ドメイン索引 - 私はOracle 11gのテキストを使用しています異なるテーブル
AuthorTable:(著者の詳細については、表) AuthorId、AUTHORNAME、AuthorDOB
ArticleTable:(文書コンテンツのテーブル)情報でarticleID、WrittenDate、PublishDate、ARTICLE_TXT(CLOB)
LocationTable:(ロケーション用テーブル)LocationId、 LocationState、LocationCity
ArticleAuthorAssocTable:AuthorId(条-者協会のテーブル)、情報でarticleID
LocAuthorAssocTable:(著 - ロケーション協会のテーブル)AuthorId、LocationId、LocationStartDate、LocationEndDate
私のクエリは、ARTICLE_TXTの入力検索語を、PublishDate/WrittenDate/AuthorDOB/LocationCity/LocationStartDateの範囲の他のクエリと一緒に検索する必要があります。
私は混合クエリを実行する必要があるため、ArticleTableでComposite Domain Index CDIを作成しました。
CREATE INDEX ARTICLE_TXT_CDI_IDX ON ArticleTable(ARTICLE_TXT)
INDEXTYPE IS ctxsys.CONTEXT
FILTER BY WrittenDate, PublishDate
と
SELECT
/*+ domain_index_sort domain_index_filter(ARTICLE_TXT_CDI_IDX) */ article.ARTICLE_TXT,
author.AuthorName , article.WrittenDate, article.PublishDate, LocationTable.LocationCity ,location.LocationStartDate, location.LocationEndDate
FROM
ArticleTable article
INNER JOIN
ArticleAuthorAssocTable articleAuthorAssoc ON article.articleId = articleAuthorAssoc .articleId
INNER JOIN
AuthorTable author ON author.authorId= articleAuthorAssoc.authorId
INNER JOIN
LocAuthorAssocTable locAuthorAssoc req ON author.authorId = locAuthorAssoc.authorId
INNER JOIN
LocationTable location ON location .authorId = locAuthorAssoc.authorId
WHERE
CONTAINS(article.ARTICLE_TXT, 'Something') >0
AND author.AuthorDOB BETWEEN TO_DATE('01/01/2001','MM/DD/YYYY')
AND TO_DATE('12/31/2012','MM/DD/YYYY')
AND location.LocationId IN (1,2)
としてクエリは、今私の質問は以下のとおりです。
- それは別のテーブルから 列にすることにより、フィルタを備えた複合ドメイン索引を作成することは可能ですか?
- 上記のクエリを改善する他の方法はありますか?私の研究から
は、いくつかのオプションは、残念ながらまだ...あなたの知識で私を助けてください、それらを使用する方法がわからない
USER_DATASTORE
、ビュー、ファンクション索引をマテリアライズドしかし、使用しています。おかげ