απαιτήσεις: Κατά τη διάρκεια μιας πρόσφατης συνέντευξης, ρωτήθηκα ποια είναι η διαφορά μεταξύ του SQL Server βάση δεδομένων int και guid ως κύριο κλειδί.Και τα δύο έχουν πλεονεκτήματα και μειονεκτήματα, ζυγίστε τα σύμφωνα με τα πραγματικά επιχειρηματικά σας σενάρια。
Πρωτότυπο κείμενο 1:Η σύνδεση με υπερσύνδεσμο είναι ορατή.
Πλεονεκτήματα της χρήσης του INT ως πρωτεύοντος κλειδιού:
1. Απαιτεί μικρό χώρο αποθήκευσης δεδομένων, μόνο 4 byte.
2. Η απόδοση της χρήσης INT για λειτουργίες εισαγωγής και ενημέρωσης είναι καλύτερη από αυτή του GUID, επομένως η χρήση int θα βελτιώσει την απόδοση της εφαρμογής.
3. Λειτουργίες ευρετηρίου και συμμετοχής, το int έχει την καλύτερη απόδοση.
4. Εύκολο να θυμάστε.
5. Υποστήριξη για τη λήψη της πιο πρόσφατης τιμής μέσω μιας συνάρτησης, όπως: Scope_Indentity().
Μειονεκτήματα της χρήσης του INT ως πρωτεύοντος κλειδιού
1. Εάν υπάρχει συχνή λειτουργία συγχώνευσης πινάκων, ενδέχεται να υπάρχει διπλασιασμός των πρωτευόντων κλειδιών.
2. Υπάρχουν περιορισμοί στο εύρος της χρήσης δεδομένων INT. Εάν υπάρχει μεγάλος όγκος δεδομένων, μπορεί να υπερβεί το εύρος τιμών INT.
3. Είναι δύσκολη η επεξεργασία κατανεμημένων αποθηκευμένων πινάκων δεδομένων.
Πλεονεκτήματα της χρήσης του GUID ως πρωτεύοντος κλειδιού:
1. Είναι μοναδικό.
2. Υπάρχουν λίγες ευκαιρίες για επικάλυψη.
3. Είναι κατάλληλο για λειτουργίες εισαγωγής και ενημέρωσης σε μεγάλο όγκο δεδομένων.
4. Η συγχώνευση δεδομένων μεταξύ διακομιστών είναι πολύ βολική.
Μειονεκτήματα της χρήσης του GUID ως πρωτεύοντος κλειδιού:
1. Ο αποθηκευτικός χώρος είναι μεγάλος (16 byte), επομένως θα καταλαμβάνει περισσότερο μέγεθος δίσκου.
2. Είναι δύσκολο να θυμηθείς. Η απόδοση της λειτουργίας σύνδεσης είναι χαμηλότερη από αυτή του int.
3. Δεν υπάρχει ενσωματωμένη λειτουργία για τη λήψη του πιο πρόσφατου πρωτεύοντος κλειδιού GUID που δημιουργήθηκε.
4. Το GUID ως πρωτεύον κλειδί θα προστεθεί σε άλλα ευρετήρια στον πίνακα, επομένως θα μειώσει την απόδοση.
Περίληψη:
Τα παραπάνω παραθέτουν τα πλεονεκτήματα και τα μειονεκτήματα των τύπων δεδομένων GUID και INT ως πρωτεύοντα κλειδιά. Νομίζω ότι για μεγάλους όγκους δεδομένων, συνιστάται η χρήση του guid ως πρωτεύοντος κλειδιού. ενώΗ χρήση του int θα σας δώσει την καλύτερη απόδοση。
Σχόλιο: ΧρήσηΗ απόδοση του GUID που παραγγέλθηκε βελτιώνεται πολύ。
Πρωτότυπο κείμενο δύο:Η σύνδεση με υπερσύνδεσμο είναι ορατή.
Η ταυτότητα είναι ένας ολόκληρος τύπος τύπου, δεκαδικός χωρίς δεκαδικό ορισμό, το bigint είναι αποδεκτό
Το guid είναι σταθερό δυαδικό(16), το οποίο είναι 16 byte
Η ταυτότητα αυξάνεται (ή αφαιρείται) και το GUID είναι τυχαίο, οπότε καθώς εισάγονται δεδομένα,Το πρώτο δεν θα παράγει θραύσματα, ενώ το δεύτερο θα παράγει, και επειδή το δεύτερο είναι εκτός λειτουργίας, η σειρά πρέπει να προσαρμοστεί όταν εισάγεται, επομένως το πρώτο είναι γενικά καλύτερο από το δεύτερο όσον αφορά την απόδοση.
Ένας μεγάλος όγκος πληροφοριών συνήθως χωρίζεται σε πίνακες, επομένως η ταυτότητα εξακολουθεί να είναι πιο κατάλληλη σε πολλές περιπτώσεις
Όσον αφορά την έννοια του πρωτεύοντος κλειδιού, αυτό εξαρτάται από το πώς το θεωρείτε κατά το σχεδιασμό, για την ίδια την επεξεργασία δεδομένων, το πρωτεύον κλειδί δεν χρειάζεται να έχει νόημα και εάν χρειάζεστε το πρωτεύον κλειδί να περιέχει επιχειρηματικό νόημα, τότε το πρωτεύον κλειδί ταυτότητας είναι φυσικά χωρίς νόημα, αλλά σε γενικές γραμμές, είναι καλύτερο να διαχωρίσετε το επιχειρηματικό νόημα και την επεξεργασία δεδομένων, η επιχείρηση αλλάζει πάντα, εάν θέλετε να φέρετε το νόημα στο κύριο κλειδί του σχεδιασμού του πίνακα, τότε η επιχείρηση αλλάζει, θα πρέπει να προσαρμόσετε περισσότερο τη δομή του πίνακα.
Αρχικό κείμενο τρία:Η σύνδεση με υπερσύνδεσμο είναι ορατή.
1. Σε συστήματα που συχνά χρειάζεται να κάνουν μετεγκατάσταση δεδομένων, συνιστάται η χρήση του Guid. Και η προσθήκη μη ομαδοποιημένων ευρετηρίων στα αντίστοιχα πεδία ξένου κλειδιού, δηλαδή πεδία που χρησιμοποιούνται για ερωτήματα σύνδεσης, είναι πολύ ωφέλιμη για τη βελτίωση της απόδοσης. Το πεδίο της συνθήκης where μπορεί επίσης να προστεθεί ανάλογα με την περίπτωση για μη ομαδοποιημένα ευρετήρια.
2. Όταν χρησιμοποιείτε τον τύπο Guid ως πρωτεύον κλειδί, ο τύπος δεδομένων θα πρέπει να είναι uniqueidentifier και φροντίστε να τον θυμάστεΑκυρώστε το "Συγκεντρωτικοί δείκτες”
3. Για συστήματα που δεν χρειάζονται μετεγκατάσταση ή μικρά συστήματα, εξακολουθεί να είναι πολύ βολικό να χρησιμοποιείτε το int ως πρωτεύον κλειδί και εξακολουθεί να υπάρχει κάποια βελτίωση στην απόδοση.
(Τέλος)
|