Предикаты соединения iOS

Я пишу приложение, которое имеет базу данных фотографий. С каждой фотографией связано несколько тегов, а в приложении есть страница поиска с множеством переключателей, которая позволяет пользователям искать фотографии только на основе интересующих их тегов. Каждый из этих тегов сохранилцелое число Я БЫ'потому что они соответствуют внешней базе данныхs идентификаторы, поэтому я пытаюсь найти их просто по идентификатору.Все поля идентификаторов проиндексированы.

Проблема возникает, когда предикаты, которые я пишу, становятся достаточно большими, потому что пользователь может выбирать из множества различных тегов для фильтрации. Эти теги сгруппированы в 3 категории [публикации, бренды и продукты], и поэтому мои запросы настроены так:ИЛИ ЖЕ'редактировать в категории, и 'А ТАКЖЕ'перебрал эти категории.

Примерный предикат запроса в итоге выглядит примерно так:

(parentPublication.publicationId==1 OR parentPublication.publicationId==2 OR parentPublication.publicationId==5) 
AND (ANY brands.brandId==12 OR ANY brands.brandId==2 OR ANY brands.brandId==0 OR ANY brands.brandId==3 OR ANY brands.brandId==5 OR ANY brands.brandId==6 OR ANY brands.brandId==7) 
AND (ANY products.productId==2 OR ANY products.productId==3 OR ANY products.productId==6)

Они могут стать намного больше, но вы понимаете. Моя проблема в том, что все онивыполнение дорогих соединенийКогда пользователь выбирает более 10 или 15, запросы выполняются очень долго и даже могут вызвать сбой приложения.

Кажется, было бы более эффективно написать что-то вроде:

parentPublication.publicationId IN (1,2,5) 
AND (ANY brands.brandId IN (12,2,0,3,5,6,7))
AND (ANY products.productId IN (2,3,6))

Но я не могу заставить этот синтаксис работать.

Поэтому мой вопрос: поддерживается ли этот тип синтаксиса, и если да, может ли кто-нибудь показать мне, как правильно его написать?

Или есть лучший способ подойти к этому типу запросов к Базовым данным вместе?

Ответы на вопрос(1)

Ваш ответ на вопрос