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

Hvordan kontrollerer jeg, om værdien allerede findes i tabellen?

Brug en unique constraint . Prøv at indsætte/opdatere posten og fange den undtagelse, der blev kastet, når den unikke begrænsning overtrædes. Dette er den eneste måde at garantere en unik e-mail-adresse; først kontrol og derefter opdatering er tilbøjelig til samtidighedsproblemer, da det er muligt, at en anden opdaterer sin post til den samme værdi, som du forsøger at indstille, lige efter du har foretaget kontrollen og før opdatering af posten.

Lær også, hvordan du bruger where -klausuler. Du henter nu ALLE poster, itererer over dem osv., hvilket tager unødvendigt mange ressourcer, tager for lang tid og er ren spild. Hvis du vil tjekke for en post, der matcher et kriterium, skriver du:

Select foo, bar from table where baz = 123

Hvor baz = 123 er dit kriterium. Forestil dig, hvad der ville ske, når du har 500 eller endda 500.000 poster i din nuværende opsætning. Databasen vil udføre din forespørgsel, samle ALLE rækker fra den database, overføre dem til din applikation, hvor din applikation vil gentage alle 500.000 resultater. Eller du beder DB'en om at gøre det, den er god til (og hvorfor du bruger den i første omgang):Giv mig alle post(er), der matcher kriterium X. Du vil få 1 eller ingen poster (i betragtning af den unikke begrænsning):1 =nogle poster matcher dit kriterium, ingen =ingen poster eksisterer. Sparer overførsel og "manuelt at skulle se på" 499.999 poster;-)




  1. Sådan opsætter du ElasticSearch-indeksstruktur med flere entitetsbindinger

  2. En oversigt over Quests nyeste databaseovervågningstjeneste - Spotlight Cloud

  3. opbygning af tidszonefunktion i PHP-webapplikation

  4. Reduktion af postgresql.conf, parameteren ad gangen