Στο σχεδιασμό της βάσης δεδομένων, χρησιμοποιούμε συχνά το guid ή το int ως κύριο κλειδί και σύμφωνα με τις γνώσεις που έχουμε μάθει, πάντα πιστεύαμε ότι το int είναι πιο αποτελεσματικό ως κύριο κλειδί, αλλά είναι αδύνατο χωρίς προσεκτική δοκιμή
Εξηγήστε τον λόγο. Έτυχε κατά τη βελτιστοποίηση της βάσης δεδομένων σήμερα, να αντιμετωπίσω αυτό το πρόβλημα, οπότε έκανα μια δοκιμή.
Περιβάλλον δοκιμής:
Επιτραπέζιος υπολογιστής Pentiun(R) 4 CPU 3.06GHz Κερδίστε XP επαγγελματικά 1.5G DDR RAM SQL Server 2005 Personal
Διαδικασία δοκιμής:
Αρχικά, δημιουργήστε μια δοκιμαστική βάση δεδομένων,
Τα αποτελέσματα των δοκιμών είναι τα εξής:
Όπως αναφέρθηκε παραπάνω, η αποτελεσματικότητα της χρήσης του int ως πρωτεύοντος κλειδιού βελτιώνεται σε σύγκριση με τη χρήση του guid ως κύριου κλειδιού, ειδικά όταν υπάρχει ερώτημα σύνδεσης και διαγραφή εγγραφών.
Επιπλέον, στο ερώτημα δεδομένων με το κύριο κλειδί στο GUID σήμερα, το χρονικό όριο του ερωτήματος παρουσιάστηκε επανειλημμένα λόγω της ένθεσης πολλών αποτελεσμάτων δευτερεύοντος ερωτήματος. Επομένως, είμαι υπέρ της χρήσης του int ως κύριου κλειδιού και δεν συμφωνώ με το guid ως κύριο κλειδί. Οι παραπάνω απόψεις αντιπροσωπεύουν προσωπικές απόψεις και ο καθένας είναι ευπρόσδεκτος να εκφράσει τις απόψεις του και να εξηγήσει τα πλεονεκτήματα και τα μειονεκτήματα του guid και του int ως το κύριο κλειδί.
Δοκιμές παρακολούθησης:
Μετά από υπενθύμιση από τα αδέρφια, ένα μη ομαδοποιημένο ευρετήριο προστέθηκε σε δύο υποπίνακες σήμερα:
ΔΗΜΙΟΥΡΓΊΑ ΜΗ ΟΜΑΔΟΠΟΙΗΜΈΝΟΥ ΕΥΡΕΤΗΡΊΟΥ Index_Detail_Guid στο Test_Guid_Detail(Guid) ΔΗΜΙΟΥΡΓΊΑ ΜΗ ΟΜΑΔΟΠΟΙΗΜΈΝΟΥ ΕΥΡΕΤΗΡΊΟΥ Index_Detail_id στο Test_Int_Detail(αναγνωριστικό) Στη συνέχεια, διεξήγαγα ένα ερώτημα εσωτερικής σύνδεσης και διαπίστωσα ότι όπως είπε @Xu Shaoxia, η αποτελεσματικότητα δεν είναι πράγματι αρκετά προφανής ώστε να δείχνει περισσότερο από 50%, και βασικά μόνο περίπου 23% βελτίωση, κάτι που εξακολουθεί να είναι αποδεκτό.
Ως εκ τούτου, συνιστάται
1. Σε συστήματα που συχνά χρειάζεται να κάνουν μετεγκατάσταση δεδομένων, συνιστάται η χρήση του Guid. Και η προσθήκη μη ομαδοποιημένων ευρετηρίων στα αντίστοιχα πεδία ξένου κλειδιού, δηλαδή πεδία που χρησιμοποιούνται για ερωτήματα σύνδεσης, είναι πολύ ωφέλιμη για τη βελτίωση της απόδοσης. Το πεδίο της συνθήκης where μπορεί επίσης να προστεθεί ανάλογα με την περίπτωση για μη ομαδοποιημένα ευρετήρια.
2. Όταν χρησιμοποιείτε τον τύπο Guid ως πρωτεύον κλειδί, ο τύπος δεδομένων θα πρέπει να είναι uniqueidentifier και φροντίστε να θυμάστε να ακυρώσετε το "συγκεντρωτικό ευρετήριο" του πρωτεύοντος κλειδιού
3. Για συστήματα που δεν χρειάζονται μετεγκατάσταση ή μικρά συστήματα, εξακολουθεί να είναι πολύ βολικό να χρησιμοποιείτε το int ως πρωτεύον κλειδί και εξακολουθεί να υπάρχει κάποια βελτίωση στην απόδοση.
|