В соответствии с документами для any
запрос будет работать быстрее, если вместо этого использовать явный join
:
. Поскольку any () использует коррелированный подзапрос, его производительность не так хороша при сравнении с большими целевыми таблицами, как с использованием соединения.
blockquote>В вашем случае вы можете сделать что-то вроде:
users = ( session.query(ZKUser) .join(user_groups) .filter(user_groups.columns.group_id.in_([1, 2, 3])) )
Это испускает SQL:
SELECT * FROM users JOIN user_groups ON users.id = user_groups.user_id WHERE user_groups.group_id IN (1, 2, 3)