sql >> Databasteknik >  >> RDS >> Mysql

Det effektivaste sättet att göra en SQL "INSERT OM INTE FINNS"

insert ignore är den bättre metoden av flera anledningar.

När det gäller prestanda är det bara en fråga som kompileras och körs, snarare än två. Detta sparar omkostnader för att flytta saker in och ut ur databasen.

När det gäller underhåll är det mer underhållbart att bara ha en fråga, eftersom logiken finns på ett ställe. Om du har lagt till en where sats, till exempel, skulle du vara mer benägen att missa att lägga till den i två separata frågor.

När det gäller noggrannhet bör endast en fråga inte ha några (eller åtminstone många färre) möjligheter för tävlingsförhållanden. Om en rad infogas mellan select och insert , då får du fortfarande ett felmeddelande.

Men bättre än insert ignore är insert . . . on duplicate key update . Det senare undviker bara felet för dupliceringsproblem. insert ignore kanske ignorerar fel som du faktiskt bryr dig om.

Förresten, du bör i alla fall leta efter fel från uttalandet.



  1. Varför använda MySQL över flatfiler?

  2. Hur fixar den här webbplatsen kodningen?

  3. Fel 404 hittades inte med EM 12c

  4. Enklare installation för att skriva till MySQL på OSX med Python