Consulta SQL onde id =… ou id =… ou id =… etc [fechado]

Fechado. Esta pergunta está fora do tópico . Atualmente não está aceitando respostas.

Comentários

  • Se houver realmente 800 cláusulas where, acho que você deveria trabalhar em seu aplicativo

Resposta

A maneira de escrever essa consulta é:

SELECT * FROM member_copy WHERE id IN (17579, 17580, 17582); 

No entanto, a verdadeira questão é: onde veio essa lista de id s? Se a lista de id s for o resultado de outra consulta ao banco de dados, você deverá fazer uma subseleção ou uma junção.

Comentários

  • Funcionou perfeitamente. Não foi a partir de uma consulta ao banco de dados, alguém realmente examinou e escolheu todos os números. Eu não os invejo.

Resposta

Um teste com EXPLAIN ANALYZE VERBOSE mostrará que o formulário com id IN (...) na resposta de @ 200_success é transformado internamente em:

SELECT * FROM member_copy WHERE id = ANY ("{17579, 17580, 17582}"); 

.. que, portanto, tem um desempenho um pouco mais rápido no início (nenhuma conversão necessária).

Além disso, o formulário em sua pergunta terá um desempenho eficaz muito parecido.

Com listas grandes, desaninhar uma matriz , seguido por JOIN geralmente será mais rápido :

SELECT m.* FROM unnest("{17579, 17580, 17582}"::int[]) id JOIN member_copy m USING (id); 

Como a lista é is the result of another database query, será mais rápido combinar os dois em um consulta com uma JOIN.

Explicação mais detalhada:

Resposta

Para um único id, a seguinte consulta funcionou para mim:

SELECT * FROM member_copy WHERE id IN ("17579"); 

Comentários

  • Você poderia explicar como isso responde ao OP?

Deixe uma resposta

O seu endereço de email não será publicado. Campos obrigatórios marcados com *