Use IN em vez de ANY no PostgreSQL

ou como reduzimos a consulta sql de 150 segundos para 60 ms 🙂

temos uma cadeia de funções que retorna uma matriz de ids de registros e usamos ANY operador – e a consulta era muito lenta em grandes conjuntos de dados.

SELECT "users".* FROM "users" WHERE "users"."id" = ANY(get_involved_user_ids_in_projects_for_user_id(3))

substituindo = ANY (array) com IN (SELECT (UNNEST (array))), assim como abaixo

SELECT "users".* FROM "users"  WHERE "users"."id" IN (select(unnest(get_involved_user_ids_in_projects_for_user_id(3))))

reduza o tempo de consulta de 150 segundos para 3 segundos :-). substituindo todas as ANY instruções para IN SELECT UNNEST na própria função – nos leva a 60 ms 🙂