Come suggerisce il titolo ... Sto cercando di capire il modo più veloce con il minimo sovraccarico per determinare se esiste un record in una tabella o meno.
Query di esempio:
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 = ?;
Dì che lo ?
scambio è con 'TB100'
... sia la prima che la seconda query restituiranno lo stesso esatto risultato (diciamo ... 1
per questa conversazione). L'ultima query verrà restituita 'TB100'
come previsto o nulla se id
non è presente nella tabella.
Lo scopo è capire se id
è presente nella tabella o meno. In caso contrario, il programma inserirà successivamente il record, in caso affermativo, il programma lo salterà o eseguirà una query UPDATE basata su altra logica di programma al di fuori dell'ambito di questa domanda.
Qual è più veloce e ha meno spese generali? (Questo verrà ripetuto decine di migliaia di volte per ogni esecuzione del programma e verrà eseguito più volte al giorno).
(Esecuzione di questa query su M $ SQL Server da Java tramite il driver JDBC fornito da M $)
if exists(select null from products where id = @id)
; se in una query chiamata direttamente da un client select case when exists (...) then 1 else 0 end
.