..


Σύνδεσμοι διαφημιζόμενων

Λιγότερο INSERT ερώτημα με ... Σε διπλότυπο KEY UPDATE

Το άρθρο γράφτηκε από τον Max Bossi

Και «γνωστό ότι μια σωστή διαχείριση ερώτημα αποτελεί απαραίτητη προϋπόθεση για σταθερή και αποτελεσματική εφαρμογή.
Σε αυτό το άρθρο θα παρουσιάσουμε ένα μικρό γνωστό αλλά πολύ ισχυρό συντακτικό, μιλώ για το σε διπλότυπο KEY ρήτρα UPDATE.

Η ρήτρα αυτή χρησιμοποιείται κατά τη διάρκεια μιας δήλωσης INSERT και σκοπός του είναι να ελέγξει, πριν από την εισαγωγή, υπάρχει επικάλυψη ένα πρωτεύον κλειδί (πρωτεύον κλειδί) ή ένα μοναδικό κλειδί (μοναδικό κλειδί), και αν συμβεί αυτό, η μηχανή un'UPDATE MySQL θα αντί να εισάγετε.

Το πλεονέκτημα της ρήτρας αυτής είναι σαφές: γράφετε ένα ερώτημα, αντί για δύο, με πλεονεκτήματα όσον αφορά την απόδοση και τον καθαρισμό κώδικα.

Ας πάρουμε ένα παράδειγμα. Ας υποθέσουμε ότι θέλουμε να κάνουμε μια απλή δέσμη ενεργειών που πραγματοποιεί την καταγραφή των επισκεπτών στο site μας. Κάτω από τη δομή του πίνακα της DB μας:

  • IP (κλειδί)
  • numero_visite
  • ultima_visita
Θέλοντας να καταγράφει κάθε διέλευση IP στις σελίδες μας έχουμε, σύμφωνα με τη συνήθη λογική, πρώτα κάνετε μια προκαταρκτική SELECT για να βεβαιωθείτε ότι το IP δεν είναι ήδη στο ΣΠ και μόνο αν η απάντηση είναι αρνητική (IP δεν είναι του παρόντος) για την αναζήτηση INSERT.

Χάρη στην INSERT σύνταξη ... Σε διπλότυπο KEY UPDATE ... μπορούμε να επιτύχουμε το ίδιο αποτέλεσμα με ένα μόνο ερώτημα:

 



 Ip_visitatori INSERT INTO VALUES ('123 .123.123.123 », 1, NOW ())

 





 ΓΙΑ ΒΑΣΙΚΑ DPLICATE







 UPDATE numero_visite numero_visite = + 1, ultima_visita = NOW ()?

 
Έτσι, αν η IP δεν είναι η εισαγωγή γίνεται, αλλιώς μπορείτε να εκτελέσετε μια απλή ενημέρωση των επηρεαζόμενων ρεκόρ. Χρησιμοποιώντας αυτή η σύνταξη σας επιτρέπει να υπάρξει όφελος από την άποψη της απόδοσης ίση με το 30%.

Με φαντασία και εφευρετικότητα λίγο »της εν λόγω ρήτρα δεν μπορεί να υπάρξει πολύ χρήσιμο σε διάφορες περιστάσεις.
Για παράδειγμα, μπορούμε να το χρησιμοποιήσουμε σε συνδυασμό με έναν όρο. Εδώ είναι ένα παράδειγμα: Ας υποθέσουμε ότι έχετε έναν πίνακα με ένα υποθετικό online site δημοπρασιών διαρθρώνεται ως εξής:

  • ID_asta
  • migliore_offerta
Ας υποθέσουμε ότι θέλετε να προχωρήσετε με την εισαγωγή ενός νέου προσφορά, αν η δημοπρασία έχει ήδη προσφερθεί θα υπάρξει μια απλή αναβάθμιση, αλλά μόνο αν η προσφορά είναι υψηλότερη από εκείνη που υπάρχει ήδη:
 



 INSERT INTO προσφορές τιμές (1, 120)

 





 ΓΙΑ ΒΑΣΙΚΑ DPLICATE







 UPDATE migliore_offerta = IF (τιμές (migliore_offerta) <120, 120, VALUES (migliore_offerta))

 
Μέσα από ένα απλό ερώτημα θα λυθεί μονομιάς ... Σε αντίθετη περίπτωση θα είχαμε να χρησιμοποιούν διάφορες ερωτήσεις με αποτέλεσμα σπατάλη πόρων (και μεγαλύτερο κίνδυνο λαθών).

Στην ίδια κατηγορία ...
E-Learning
MS Access (Μάθημα) MS Access (Μάθημα)
Μάθετε πώς να δημιουργήσετε και να διαχειριστείτε τις βάσεις δεδομένων εύκολα και γρήγορα. Ξεκινώντας από 29 €.
MySQL (Μάθημα) MySQL (Μάθημα)
Διαχείριση του open-source βάση δεδομένων. Ξεκινώντας από 39 €.
SQL και βάσης δεδομένων (Μάθημα) SQL και βάσης δεδομένων (Μάθημα)
Δημιουργία και διαχείριση των σχεσιακών βάσεων δεδομένων. Ξεκινώντας από 39 €.
Σύνδεσμοι διαφημιζόμενων