В сравнении с ИЛИ в OQL ключевой 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 в предложении SQL WHERE
Настройка производительности SQL для Oracle Многие ИЛИ против IN () [дубликат]
1 ответ
"IN" в индексированном поле будет гораздо более отзывчивым, чем "ИЛИ" в качестве прямого ответа, но есть исключения.
Некоторые комментарии к вашему примеру:
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 "
перед вашими операторами "ИЛИ", потому что GemFire сначала выполнит этот оператор и с меньшим набором результатов, примените операцию "содержит" в памяти с ограниченным набором результатов.
В приведенном вами примере предложение IN не может быть применено с содержит.
Прежде чем оставить этот ответ, я часто использую IN с ключами из другого набора результатов. Если атрибут проиндексирован, это очень быстро.