Mysql
 sql >> Base de données >  >> RDS >> Mysql

Le moyen le plus efficace de faire un SQL 'INSERT IF NOT EXISTS'

Le insert ignore est la meilleure méthode, pour plusieurs raisons.

En termes de performances, une seule requête est compilée et exécutée, au lieu de deux. Cela évite les frais généraux liés au déplacement d'éléments dans et hors de la base de données.

En termes de maintenance, n'avoir qu'une seule requête est plus facile à gérer, car toute la logique est au même endroit. Si vous avez ajouté un where clause, par exemple, vous seriez plus susceptible de ne pas l'ajouter dans deux requêtes distinctes.

En termes de précision, une seule requête ne devrait pas avoir (ou au moins beaucoup moins) d'opportunités pour les conditions de concurrence. Si une ligne est insérée entre le select et insert , vous obtiendrez toujours une erreur.

Cependant, mieux que insert ignore est insert . . . on duplicate key update . Ce dernier évite uniquement l'erreur pour les problèmes de duplication. insert ignore ignorez peut-être des erreurs qui vous intéressent réellement.

Soit dit en passant, vous devriez de toute façon vérifier les erreurs de la déclaration.