Прежде чем углубляться в проблему, сначала я объясню ситуацию. У меня есть две таблицы, такие как следующие:
USERS TABLE
user_id
username
firstName
lastName
GROUPS TABLE
user_id
group_id
Я хочу получить всех пользователей, чье имя LIKE "% foo%" и кто входит в группу с group_id = 'givengid'
Итак, запрос хотел бы что-то вроде этого:
SELECT user_id FROM users WHERE firstName LIKE '%foo'"
Я могу создать пользовательскую функцию sql, такую как ismember (user_id, group_id), которая будет возвращать 1, если пользователь является частью группы, и 0, если они не являются, и это в предложении WHERE в вышеупомянутой инструкции выбора. Однако это означает, что для каждого пользователя, имя которого соответствует критериям, необходимо выполнить другой запрос через тысячи других записей, чтобы найти потенциальное совпадение для записи группы.
Таблица пользователей и групп будет содержать несколько сотен тысяч записей. Является ли более общепринятым использование подхода, определяемого пользователем, или выполнение запроса с помощью оператора UNION? Если подход UNION лучший, как будет выглядеть запрос с оператором объединения?
Конечно, я проведу тесты, но я просто хочу получить представление о возможном диапазоне решений для этой ситуации и о том, что в целом является наиболее эффективным / действенным.