Αναγνώστες σαν εσάς βοηθούν στην υποστήριξη του MUO. Όταν κάνετε μια αγορά χρησιμοποιώντας συνδέσμους στον ιστότοπό μας, ενδέχεται να κερδίσουμε μια προμήθεια θυγατρικών. Διαβάστε περισσότερα.

Ένα ευρετήριο βοηθά τον SQL Server να ανακτά γρήγορα δεδομένα από σειρές. Τα ευρετήρια λειτουργούν όπως ο πίνακας περιεχομένων στην αρχή των βιβλίων, επιτρέποντάς σας να αναζητήσετε γρήγορα τη σελίδα στην οποία βρίσκεται ένα θέμα. Χωρίς ευρετήρια, ο SQL Server πρέπει να σαρώσει όλες τις σειρές ενός πίνακα για να βρει μια εγγραφή.

Υπάρχουν δύο τύποι ευρετηρίων στον SQL Server: συμπλέγματα και μη συμπλέγματα. Μάθετε τη διαφορά μεταξύ των ευρετηρίων σε ομαδοποίηση και μη και γιατί είναι σημαντικά.

Ευρετήριο συμπλέγματος στον SQL Server

Σε ένα ομαδοποιημένο ευρετήριο, οι σειρές δεδομένων αποθηκεύονται φυσικά με ταξινομημένο τρόπο με βάση την τιμή κλειδιού. Δεδομένου ότι το ευρετήριο περιλαμβάνει τον πίνακα και μπορεί να τακτοποιήσει μόνο σειρές με μία σειρά, μπορείτε να δημιουργήσετε μόνο ένα ευρετήριο συμπλέγματος ανά πίνακα.

instagram viewer

Ενώ τα ευρετήρια κάνουν την ανάκτηση σειρών σε ένα εύρος ταχύτερη, ΕΙΣΑΓΩΓΗ και ΕΝΗΜΕΡΩΣΗ δηλώσεων μπορεί να είναι αργή επειδή το εργαλείο βελτιστοποίησης ερωτημάτων σαρώνει το ευρετήριο με τη σειρά μέχρι να βρει το ευρετήριο-στόχο.

Μη συμπλεγματοποιημένο ευρετήριο στον SQL Server

Ένα ευρετήριο χωρίς συμπλέγματα περιέχει τις βασικές τιμές των οποίων η καταχώριση είναι ένας δείκτης που ονομάζεται εντοπιστής γραμμής. Για ομαδοποιημένους πίνακες (πίνακες με ομαδοποιημένο ευρετήριο), ο δείκτης δείχνει σε ένα κλειδί στο ομαδοποιημένο ευρετήριο το οποίο με τη σειρά του δείχνει στη σειρά του πίνακα. Για σειρές χωρίς ομαδοποιημένο ευρετήριο, ο δείκτης δείχνει απευθείας στη σειρά του πίνακα.

Πώς να δημιουργήσετε ένα συμπλεγμένο ευρετήριο στον SQL Server

Όταν δημιουργείτε έναν πίνακα με πρωτεύον κλειδί, ο SQL Server δημιουργεί αυτόματα ένα κλειδί ευρετηρίου συμπλέγματος με βάση αυτό το πρωτεύον κλειδί. Εάν δεν έχετε πρωτεύον κλειδί, μπορείτε να εκτελέσετε την ακόλουθη πρόταση για να δημιουργήσετε ένα κλειδί ευρετηρίου συμπλέγματος.

ΔΗΜΙΟΥΡΓΩ ΟΜΑΔΕΣ ΔΕΙΚΤΗΣ <δείκτηςόνομα>
ΣΤΟ ΤΡΑΠΕΖΙ <όνομα_πίνακα>(όνομα_στήλης)

Σε αυτήν τη δήλωση, καθορίζετε το όνομα του ευρετηρίου, το όνομα του πίνακα στον οποίο θα το δημιουργήσετε και το όνομα της στήλης που θα χρησιμοποιήσετε στο ευρετήριο.

Εάν προσθέσετε ένα πρωτεύον κλειδί σε έναν πίνακα που έχει ήδη ένα ευρετήριο συμπλέγματος, ο SQL Server θα δημιουργήσει ένα μη συμπλεγμένο ευρετήριο με αυτό.

Για να δημιουργήσετε ένα ευρετήριο συμπλέγματος που δεν περιλαμβάνει τη στήλη του πρωτεύοντος κλειδιού, πρέπει πρώτα να απορρίψετε τον περιορισμό του πρωτεύοντος κλειδιού.

ΧΡΗΣΗόνομα βάσης δεδομένων
ΑΛΛΑΖΩΤΡΑΠΕΖΙ όνομα_πίνακα
ΠΤΩΣΗΠΕΡΙΟΡΙΣΜΟΣ pk_name
ΠΗΓΑΙΝΩ

Η κατάργηση των περιορισμών του πρωτεύοντος κλειδιού καταργεί επίσης το ευρετήριο συμπλέγματος που σας επιτρέπει να δημιουργήσετε ένα προσαρμοσμένο.

Πώς να δημιουργήσετε ένα μη συμπλεγμένο ευρετήριο στον SQL Server

Για να δημιουργήσετε ένα ευρετήριο χωρίς συμπλέγματα, χρησιμοποιήστε την ακόλουθη πρόταση.

ΔΗΜΙΟΥΡΓΩΔΕΙΚΤΗΣ <δείκτηςόνομα>
ΣΤΟ ΤΡΑΠΕΖΙ <όνομα_πίνακα>(όνομα_στήλης)

Μπορείτε επίσης να χρησιμοποιήσετε τη λέξη-κλειδί NONCLUSTERED ως εξής:

ΔΗΜΙΟΥΡΓΩ [ΜΗ ΣΥΓΚΕΚΡΙΜΕΝΟ] ΔΕΙΚΤΗΣ <δείκτηςόνομα>
ΣΤΟ ΤΡΑΠΕΖΙ <όνομα_πίνακα>(όνομα_στήλης)

Αυτή η δήλωση δημιουργεί ένα μη συγκεντρωμένο ευρετήριο στον πίνακα που καθορίζετε και περιλαμβάνει τη στήλη που υποδεικνύετε.

Εάν θέλετε, μπορείτε να ταξινομήσετε τις στήλες σε αύξουσα (ASC) ή φθίνουσα (DESC) σειρά.

ΔΗΜΙΟΥΡΓΩ [ΜΗ ΣΥΓΚΕΚΡΙΜΕΝΟ] ΔΕΙΚΤΗΣ <δείκτηςόνομα>
ΣΤΟ ΤΡΑΠΕΖΙ <όνομα_πίνακα>(όνομα_στήλης ASC/DESC)

Ποιον δείκτη να επιλέξετε;

Τόσο τα ομαδοποιημένα όσο και τα μη ευρετήρια βελτιώνουν τον χρόνο υποβολής ερωτημάτων. Εάν τα περισσότερα από τα ερωτήματά σας είναι λειτουργίες SELECT σε πολλές στήλες του πίνακα, τα συμπλεγμένα ευρετήρια είναι ταχύτερα. Ωστόσο, για τις λειτουργίες INSERT ή UPDATE, τα ευρετήρια χωρίς συμπλέγματα είναι ταχύτερα, καθώς το εργαλείο βελτιστοποίησης ερωτημάτων μπορεί να εντοπίσει τη στήλη απευθείας από το ευρετήριο.

Όπως μπορείτε να δείτε, αυτοί οι δείκτες λειτουργούν καλύτερα διαφορετικά ερωτήματα SQL. Ως εκ τούτου, οι περισσότερες βάσεις δεδομένων SQL θα επωφεληθούν από την ύπαρξη τουλάχιστον ενός συμπλεγμένου ευρετηρίου και μη συμπλεγματοποιημένων ευρετηρίων για στήλες που ενημερώνονται τακτικά.

Η σημασία των ευρετηρίων στον SQL Server

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

Μπορείτε επίσης να χρησιμοποιήσετε ευρετήρια χωρίς συμπλέγματα για να επιλύσετε αδιέξοδα αναζήτησης σελιδοδεικτών, δημιουργώντας ένα μη συμπλεγμένο ευρετήριο για στήλες στις οποίες έχουν πρόσβαση τα ερωτήματα.