在处理群集中不同节点上跨多个表(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'是List。
参考文献:
IN vs OR in the SQL WHERE Clause
SQL performance tuning for Oracle Many OR vs IN () [duplicate]
答案 0 :(得分: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')))
你希望在你的" OR"之前有"content_type = 'xyz' AND "
。语句,因为GemFire将首先执行该语句,并使用较小的结果集,应用" contains"使用有限的结果集在内存中操作。
在您提供的示例中," IN"子句不能与contains一起使用。
在我离开这个答案之前,我 经常使用来自另一个结果集的键。如果属性已编入索引,则速度非常快。