sql >> Database >  >> RDS >> Mysql

Meest efficiënte manier om een ​​SQL 'INSERT IF NOT EXISTS' uit te voeren

De insert ignore is om verschillende redenen de betere methode.

Wat de prestaties betreft, wordt er slechts één query gecompileerd en uitgevoerd in plaats van twee. Dit bespaart de overhead van het verplaatsen van dingen in en uit de database.

In termen van onderhoud is slechts één query beter onderhoudbaar, omdat de logica allemaal op één plek staat. Als je een where . hebt toegevoegd U zou bijvoorbeeld eerder een clausule overslaan om deze in twee afzonderlijke zoekopdrachten toe te voegen.

In termen van nauwkeurigheid zou slechts één zoekopdracht geen (of in ieder geval veel minder) kansen voor race-omstandigheden moeten hebben. Als een rij wordt ingevoegd tussen de select en insert , dan krijg je nog steeds een foutmelding.

Echter, beter dan insert ignore is insert . . . on duplicate key update . De laatste vermijdt alleen de fout voor duplicatieproblemen. insert ignore misschien negeert u fouten waar u echt om geeft.

Trouwens, je zou hoe dan ook moeten controleren op fouten in de verklaring.



  1. Een CSV importeren naar MySQL met een ander datumformaat

  2. Yii CDbConnection kon de DB-verbinding niet openen:kon stuurprogramma niet vinden met google cloud sql

  3. Hoe SUBDATE() werkt in MariaDB

  4. Entity Framework + MySQL - Waarom zijn de prestaties zo slecht?