В сравнении с ИЛИ в 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 с ключами из другого набора результатов. Если атрибут проиндексирован, это очень быстро.

Другие вопросы по тегам