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 "在您的“OR”语句前面有它,因为 GemFire 将首先执行该语句并使用较小的结果集,在内存中应用有限结果集的“包含”操作。

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

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

于 2016-08-13T04:31:21.283 回答