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 ... 1para esta conversa). A última consulta retornará 'TB100'conforme o esperado ou nada se idnão estiver presente na tabela.
O objetivo é descobrir se o item idestá 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.