OQL关键宝石中的IN vs OR

时间:2016-07-08 07:42:18

标签: gemfire spring-data-gemfire oql

在处理群集中不同节点上跨多个表(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]

1 个答案:

答案 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一起使用。

在我离开这个答案之前,我 经常使用来自另一个结果集的键。如果属性已编入索引,则速度非常快。