OQL 关键 gemfire 中的 IN 与 OR

IN vs OR in OQL pivotal gemfire

当处理跨越集群中不同节点上的多个表(就 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' 是列表。

参考文献:

IN vs OR in the SQL WHERE Clause

SQL performance tuning for Oracle Many OR vs IN () [duplicate]

索引字段上的

"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')))

您想在 "OR" 语句前面添加 "content_type = 'xyz' AND " 因为 GemFire 将首先执行该语句并使用较小的结果集,在内存中应用 "contains" 操作结果集有限。

在您提供的示例中,"IN" 子句不能与包含一起应用。

在我留下这个答案之前,我 经常将 IN 与另一个结果集中的键一起使用。如果属性被索引,那是非常快的。