sql >> Database teknologi >  >> RDS >> Mysql

Den mest effektive måde at lave en SQL 'INSERT IF NOT EXISTS'

insert ignore er den bedre metode af flere grunde.

Med hensyn til ydeevne bliver kun én forespørgsel kompileret og udført i stedet for to. Dette sparer omkostningerne ved at flytte ting ind og ud af databasen.

Med hensyn til vedligeholdelse er kun én forespørgsel mere vedligeholdelsesdygtig, fordi logikken er samlet ét sted. Hvis du tilføjede en where klausul, for eksempel, ville du være mere tilbøjelig til at gå glip af at tilføje den i to separate forespørgsler.

Med hensyn til nøjagtighed bør kun én forespørgsel ikke have nogen (eller i det mindste mange færre) muligheder for løbsforhold. Hvis en række er indsat mellem select og insert , så får du stadig en fejl.

Men bedre end insert ignore er insert . . . on duplicate key update . Sidstnævnte undgår kun fejlen for duplikeringsproblemer. insert ignore ignorerer muligvis fejl, som du faktisk bekymrer dig om.

I øvrigt bør du alligevel tjekke for fejl fra erklæringen.



  1. Eliminer % symbol, mens du bruger selenskraber (Python)

  2. Hvordan kan jeg omskrive denne forespørgsel for at undgå fejlen:Du kan ikke angive måltabel for opdatering i FROM-klausulen

  3. importere en CSV til phpmyadmin

  4. Sådan springer du rækker over, der overtræder begrænsninger, når du indsætter data i SQLite