La forma de escribir esa consulta es:
SELECT * FROM member_copy WHERE id IN (17579, 17580, 17582);
Sin embargo, la verdadera pregunta es dónde ¿De dónde viene esa lista de id
s? Si la lista de id
s es el resultado de otra consulta de base de datos, entonces debería estar haciendo una subselección o una unión en su lugar.
Comentarios
Una prueba con EXPLAIN ANALYZE VERBOSE
le mostrará que el formulario con id IN (...)
en la respuesta de @ 200_success se transforma internamente en:
SELECT * FROM member_copy WHERE id = ANY ("{17579, 17580, 17582}");
.. que, por lo tanto, funciona un poco más rápido para empezar (no se necesita conversión).
Además, el formulario en su pregunta funcionará de manera efectiva muy similar.
Con listas grandes, desanidar una matriz , seguido de JOIN
generalmente será más rápido :
SELECT m.* FROM unnest("{17579, 17580, 17582}"::int[]) id JOIN member_copy m USING (id);
Dado que la lista es is the result of another database query
, será más rápido combinar ambos en uno consulta con una JOIN
.
Explicación más detallada:
Para una única identificación, la siguiente consulta funcionó para mí:
SELECT * FROM member_copy WHERE id IN ("17579");
Comentarios