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 与另一个结果集中的键一起使用。如果属性被索引,那是非常快的。
当处理跨越集群中不同节点上的多个表(就 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 与另一个结果集中的键一起使用。如果属性被索引,那是非常快的。