Ma principale question est de savoir quelle est l'approche la plus rapide.
Quelques informations
Je développe une application en utilisant Mozilla.
J'ai un module dans lequel je capture des données et les stocke dans une base de données. Les données arrivent par intermittence. Aucun doublon ne doit être stocké. Pour les besoins de la discussion, nous pouvons supposer qu'une table ne comporte qu'une seule colonne, nommée "mot-clé". Ainsi, si nous obtenons un mot-clé qui se trouve déjà dans la base de données, nous ne le stockons pas à nouveau. Et oui, nous avons défini cette colonne en tant que CLÉ PRIMAIRE et l'avons rendue UNIQUE :)
La question que je me pose est la suivante :
1) Avant d'insérer ces nouvelles données dans la base de données, dois-je faire un appel à la base de données et vérifier si le mot-clé existe ou non ; s'il n'existe pas, l'insérer dans la base de données ? Quelque chose comme :
function insert_keyword(keyword)
{
if(!SQL.exists(keyword))
{
SQL.insert(keyword);
}
}
O
2) Je me contente d'insérer et de laisser la base de données gérer la condition, en la laissant effectivement lancer une exception, que je rattrape.
function insert_keyword(keyword)
{
try {
SQL.insert(keyword);
}
catch (e)
{
// keyword exists!
}
}
Je sais qu'il n'est pas bon d'attraper une exception et de ne rien faire ! Je ne cherche donc pas à savoir ce qui est bon ou mauvais :) . Ce que je veux comprendre, c'est quelle approche serait la plus rapide. (Spécifiquement en relation avec Mozilla, JavaScript et SQLite, mais les commentaires généraux sont les bienvenus !)
Notes de bas de page : En SQL. La syntaxe que j'ai utilisée ne l'est qu'à titre d'illustration. Vous pouvez supposer que je crée des instructions SQL, que je les exécute et que je récupère le résultat, ou que c'est un appel à la bibliothèque JavaScript qui fait tout le sale boulot.
Cette question ressemble un peu à celle-ci :
Mais je souhaite comprendre les différences liées aux performances, car l'application sur laquelle je travaille doit être aussi rapide que possible (quelle application ne l'est pas ? ;) ).