Comme le titre le suggère... J'essaie de trouver le moyen le plus rapide et le moins coûteux de déterminer si un enregistrement existe ou non dans une table.
Exemple de requête :
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 = ?;
Dites le ?
est échangé avec 'TB100'
... la première et la seconde requête renverront exactement le même résultat (disons... 1
pour cette conversation). La dernière requête renverra 'TB100'
comme prévu, ou rien si le id
n'est pas présent dans le tableau.
Le but est de déterminer si le id
est dans le tableau ou non. Si ce n'est pas le cas, le programme insère l'enregistrement. S'il l'est, le programme l'ignore ou exécute une requête UPDATE en fonction d'une autre logique de programme qui n'entre pas dans le cadre de cette question.
Lequel est le plus rapide et présente le moins de frais généraux ? (Cette question sera répétée des dizaines de milliers de fois par exécution du programme, et sera exécutée plusieurs fois par jour).
(Exécution de cette requête contre le serveur SQL de M$ à partir de Java via le pilote JDBC fourni par M$)