0

クラスター内の異なるノード上の複数のテーブル (gemfire に関しては領域) にまたがるコンテンツを処理する場合、どのオペレーターがより高速な結果を提供します。

今のところ、私の検索 OQL クエリは次のようになります。

select * from /content_region where content_type = 'xyz' AND (shared_with.contains('john') OR (shared_with.contains('michael') OR (shared_with.contains('peter')))

「shared_with」がリストであると考えてください。

参考文献:

SQL WHERE 句の IN と OR

Oracle Many OR vs IN () の SQL パフォーマンス チューニング [複製]

4

1 に答える 1

1

インデックス付きフィールドの "IN" は、直接的な回答として "OR" よりも非常に応答性が高くなりますが、例外があります。

あなたの例に関するいくつかのコメント:

select * from /content_region where content_type = 'xyz' AND (shared_with.contains('john') OR (shared_with.contains('michael') OR (shared_with.contains('peter')))

"content_type = 'xyz' AND "GemFire は最初にそのステートメントを実行し、より小さい結果セットを使用して、制限された結果セットでメモリ内の「含む」操作を適用するため、「OR」ステートメントの前にそれを配置する必要があります。

あなたが提供した例では、「IN」句を含むには適用できません。

この回答を残す前に、別の結果セットのキーで IN を頻繁に使用します属性がインデックス化されている場合、非常に高速です。

于 2016-08-13T04:31:21.283 に答える