Como o título sugere ... Estou tentando descobrir o caminho mais rápido com o mínimo de sobrecarga para determinar se um registro existe em uma tabela ou não.
Consulta de amostra:
SELECT COUNT(*) FROM products WHERE products.id = ?;
vs
SELECT COUNT(products.id) FROM products WHERE products.id = ?;
vs
SELECT products.id FROM products WHERE products.id = ?;
Digamos que ?
seja trocado por 'TB100'
... a primeira e a segunda consultas retornarão exatamente o mesmo resultado (digamos ... 1
para esta conversa). A última consulta retornará 'TB100'
conforme o esperado ou nada se id
não estiver presente na tabela.
O objetivo é descobrir se o item id
está na tabela ou não. Caso contrário, o programa inserirá o registro em seguida, caso contrário, o programa o ignorará ou executará uma consulta UPDATE com base em outra lógica do programa fora do escopo desta pergunta.
Qual é mais rápido e tem menos despesas gerais? (Isso será repetido dezenas de milhares de vezes por execução do programa e será executado várias vezes ao dia).
(Executando esta consulta no M $ SQL Server a partir de Java por meio do driver JDBC fornecido pelo M $)
if exists(select null from products where id = @id)
; se em uma consulta chamada diretamente por um cliente select case when exists (...) then 1 else 0 end
.