Я думаю, что лучший способ справиться с этим - нормализовать вашу модель. Следующее, вероятно, будет содержать ошибки, поскольку я не пробовал, но идея должна быть ясна:
CREATE TABLE users (id INTEGER PRIMARY KEY, name VARCHAR(100) UNIQUE);
CREATE TABLE groups (id INTEGER PRIMARY KEY, name VARCHAR(100) UNIQUE);
CREATE TABLE user_group (
user INTEGER NOT NULL REFERENCES users,
group INTEGER NOT NULL REFERENCES groups);
CREATE UNIQUE INDEX user_group_unique ON user_group (user, group);
SELECT users.name
FROM user_group
INNER JOIN users ON user_group.user = users.id
INNER JOIN groups ON user_group.group = groups.id
WHERE groups.name = 'Engineering';
Полученный план выполнения уже должен быть достаточно эффективным; вы все еще можете оптимизировать, индексируя ON user_group (group), что позволяет index_scan, а не sequential_scan, найти членов определенной группы.