Como sugiere el título ... Estoy tratando de descubrir la forma más rápida con la menor sobrecarga para determinar si existe un registro en una tabla o no.
Consulta de muestra:
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 ?
se intercambia con 'TB100'
... tanto la primera como la segunda consulta devolverán exactamente el mismo resultado (digamos ... 1
para esta conversación). La última consulta volverá 'TB100'
como se esperaba, o nada si id
no está presente en la tabla.
El propósito es averiguar si el id
está en la tabla o no. De lo contrario, el programa insertará luego el registro; si es así, el programa lo omitirá o realizará una consulta de ACTUALIZACIÓN basada en otra lógica del programa fuera del alcance de esta pregunta.
¿Cuál es más rápido y tiene menos gastos generales? (Esto se repetirá decenas de miles de veces por ejecución de programa y se ejecutará muchas veces al día).
(Ejecutar esta consulta en M $ SQL Server desde Java a través del controlador JDBC proporcionado por M $)
if exists(select null from products where id = @id)
; si en una consulta llamada directamente por un cliente select case when exists (...) then 1 else 0 end
.