Πώς λειτουργεί ευρετηρίαση βάση δεδομένων;

ψήφοι
1k

Δεδομένου ότι indexingείναι τόσο σημαντικό όσο τα στοιχεία σας που αυξάνει σε μέγεθος, μπορεί κάποιος να εξηγήσει πώς λειτουργεί η ευρετηρίαση σε database-agnosticεπίπεδο;

Για πληροφορίες σχετικά με τα ερωτήματα στο ευρετήριο ένα πεδίο, δείτε Πώς μπορώ να δείκτης μια στήλη της βάσης δεδομένων .

Δημοσιεύθηκε 04/08/2008 στις 11:07
πηγή χρήστη
Σε άλλες γλώσσες...                            


10 απαντήσεις

ψήφοι
2k

Γιατί είναι απαραίτητη;

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

Λόγω του γεγονότος ότι ένας αριθμός εγγραφών μπορούν να ταξινομηθούν μόνο σε ένα πεδίο, μπορούμε να δηλώσουμε ότι η αναζήτηση σε ένα πεδίο που δεν είναι ταξινομημένο απαιτεί Γραμμική αναζήτησης η οποία απαιτεί N/2προσβάσεων μπλοκ (κατά μέσο όρο), όπου Nείναι ο αριθμός των μπλοκ που ο πίνακας εκτείνεται. Αν αυτό το πεδίο είναι ένα πεδίο μη-κλειδιού (δηλαδή δεν περιέχει μοναδικές συμμετοχές), τότε το σύνολο πινάκων πρέπει να αναζητηθεί στο Nμπλοκ προσπελάσεις.

Ότι, με μια ταξινομημένη τομέα, μια δυαδική αναζήτηση μπορεί να χρησιμοποιηθεί, το οποίο έχει log2 Nμπλοκ προσπελάσεις. Επίσης, δεδομένου ότι τα δεδομένα ταξινομούνται δοθεί ένα πεδίο μη-κλειδί, το υπόλοιπο του πίνακα δεν χρειάζεται να ψάξει για διπλές τιμές, μόλις βρεθεί μια υψηλότερη τιμή. Έτσι, η αύξηση των επιδόσεων είναι ουσιαστική.

Τι είναι η ευρετηρίαση;

Ευρετηρίαση είναι ένας τρόπος ταξινόμησης αριθμό των εγγραφών σε πολλαπλά πεδία. Η δημιουργία ενός δείκτη σε ένα πεδίο σε έναν πίνακα δημιουργεί μια άλλη δομή δεδομένων που κρατά την τιμή του πεδίου, και ένας δείκτης στην εγγραφή που αφορά. Αυτή η δομή του ευρετηρίου στη συνέχεια ταξινομούνται, επιτρέποντας Binary Αναζητήσεις που πρέπει να εκτελεστούν σε αυτό.

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

Πώς λειτουργεί;

Κατ 'αρχάς, ας περιγράψει ένα δείγμα πίνακα βάσης δεδομένων σχήμα?

Το πεδίο τύπου όνομα Δεδομένα Μέγεθος στο δίσκο
id (Πρωτεύον κλειδί) unsigned int 4 bytes
firstname Char (50) 50 bytes
LastName Char (50) 50 bytes
EmailAddress Char (100) 100 bytes

Σημείωση : char χρησιμοποιήθηκε στη θέση του varchar να καταστεί δυνατή η ακριβής μέγεθος της αξίας του δίσκου. Αυτό το δείγμα βάσης δεδομένων περιέχει πέντε εκατομμύρια σειρές και unindexed. Η απόδοση των διαφόρων ερωτημάτων τώρα θα αναλυθεί. Αυτά είναι ένα ερώτημα χρησιμοποιώντας το id (α ταξινομημένο πεδίο κλειδιού) και μία με τη χρήση της firstname (ένα μη-κλειδιού αδιαχώριστα πεδίου).

Παράδειγμα 1 - ταξινομημένο vs αδιαχώριστα πεδία

Δεδομένης δείγμα βάσης δεδομένων μας r = 5,000,000εγγραφών ενός σταθερού μεγέθους δίνοντας ένα μήκος εγγραφής των R = 204bytes και αποθηκεύονται σε έναν πίνακα, χρησιμοποιώντας τον κινητήρα MyISAM η οποία χρησιμοποιεί τις προεπιλεγμένες μέγεθος μπλοκ B = 1,024bytes. Ο συντελεστής κλείδωμα του πίνακα θα είναι bfr = (B/R) = 1024/204 = 5εγγραφών ανά μπλοκ δίσκου. Ο συνολικός αριθμός των μπλοκ που απαιτούνται για να συγκρατεί το τραπέζι είναι N = (r/bfr) = 5000000/5 = 1,000,000τετράγωνα.

Μια γραμμική αναζήτηση στο πεδίο id θα απαιτούσε κατά μέσο όρο N/2 = 500,000μπλοκ προσπελάσεις για να βρούμε μια τιμή, δεδομένου ότι το πεδίο id είναι ένα βασικό τομέα. Αλλά δεδομένου ότι το πεδίο id είναι επίσης ταξινομημένο, μια δυαδική αναζήτηση μπορεί να πραγματοποιηθεί απαιτεί κατά μέσο όρο log2 1000000 = 19.93 = 20μπλοκ προσπελάσεις. Αμέσως μπορούμε να δούμε αυτό είναι μια δραστική βελτίωση.

Τώρα το Firstname πεδίο δεν είναι ούτε ταξινομημένα ούτε ένα βασικό τομέα, έτσι ώστε η δυαδική αναζήτηση είναι αδύνατη, ούτε είναι οι μοναδικές τιμές, και ως εκ τούτου ο πίνακας θα απαιτήσει την αναζήτηση στο τέλος για μια ακριβή N = 1,000,000μπλοκ προσπελάσεις. Είναι αυτή η κατάσταση που ευρετηρίασης έχει ως στόχο να διορθώσει.

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

Το πεδίο τύπου όνομα Δεδομένα Μέγεθος στο δίσκο
firstname Char (50) 50 bytes
(Δείκτης εγγραφής) Ειδικές 4 bytes

Σημείωση : Δείκτες σε MySQL είναι 2, 3, 4 ή 5 bytes σε μήκος, ανάλογα με το μέγεθος του πίνακα.

Παράδειγμα 2 - ευρετηρίασης

Δεδομένης δείγμα βάσης δεδομένων μας των r = 5,000,000εγγραφών με μήκος αρχείο δεικτών των R = 54bytes και χρησιμοποιώντας τις προεπιλεγμένες μέγεθος μπλοκ B = 1,024bytes. Ο παράγοντας αποκλεισμού του δείκτη θα είναι bfr = (B/R) = 1024/54 = 18εγγραφών ανά μπλοκ δίσκου. Ο συνολικός αριθμός των μπλοκ που απαιτούνται για να συγκρατεί το ευρετήριο είναι N = (r/bfr) = 5000000/18 = 277,778τετράγωνα.

Τώρα, μια αναζήτηση χρησιμοποιώντας το Firstname τομέα μπορεί να χρησιμοποιήσει το δείκτη για την αύξηση της απόδοσης. Αυτό επιτρέπει μια δυαδική αναζήτηση του δείκτη με το μέσο όρο των log2 277778 = 18.08 = 19προσβάσεων μπλοκ. Για να βρείτε τη διεύθυνση του πραγματικού ρεκόρ, το οποίο απαιτεί περαιτέρω πρόσβαση μπλοκ για να διαβάσετε, ανεβάζοντας το συνολικό αριθμό σε 19 + 1 = 20μπλοκ προσπελάσεις, απέχουν κατά πολύ από το μπλοκ 1.000.000 προσβάσεις που απαιτούνται για να βρεθεί μια Firstname αγώνα στο μη-ευρετήριο πίνακα.

Όταν πρέπει να χρησιμοποιηθεί;

Δεδομένου ότι η δημιουργία ενός δείκτη απαιτεί επιπλέον χώρο στο δίσκο (277.778 μονάδες επιπλέον από το παραπάνω παράδειγμα, η% αύξηση ~ 28), και ότι πάρα πολλοί δείκτες μπορούν να προκαλέσουν προβλήματα που προκύπτουν από τα όρια μεγέθους συστήματα αρχείων, προσεκτική σκέψη πρέπει να χρησιμοποιηθεί για να επιλέξετε το σωστό πεδία στο ευρετήριο.

Δεδομένου ότι οι δείκτες που χρησιμοποιούνται μόνο για να επιταχυνθεί η αναζήτηση για έναν τομέα που ταιριάζουν μέσα στα βιβλία, στέκεται στο λόγο ότι τα πεδία ευρετηρίασης χρησιμοποιείται μόνο για την έξοδο θα ήταν απλά ένα χάσιμο του χώρου στο δίσκο και το χρόνο επεξεργασίας όταν κάνει ένα ένθετο ή να διαγράψετε τη λειτουργία, και ως εκ τούτου πρέπει να αποφευχθεί. δίνεται επίσης τη φύση της μια δυαδική αναζήτηση, η πληθικότητα ή μοναδικότητα των δεδομένων είναι σημαντική. Ευρετηρίαση σε ένα πεδίο με ένα πληθικότητας των 2 θα χωρίσει τα δεδομένα σε μισό, ενώ ένα cardinality 1.000 θα επιστρέψει περίπου 1.000 εγγραφές. Με μια τέτοια χαμηλή πληθικότητας η αποτελεσματικότητα μειώνεται σε μία γραμμική είδος, και η βελτιστοποίηση ερωτήματος θα αποφεύγουν τη χρήση του δείκτη εάν η πληθάριθμο είναι λιγότερο από 30% του αριθμού εγγραφής, καθιστώντας ουσιαστικά ο δείκτης ένα χάσιμο του χώρου.

Απαντήθηκε 04/08/2008 στις 11:41
πηγή χρήστη

ψήφοι
168

Την πρώτη φορά που διάβασα αυτό ήταν πολύ χρήσιμο για μένα. Ευχαριστώ.

Από τότε απέκτησα κάποια εικόνα σχετικά με το μειονέκτημα της δημιουργίας δεικτών: αν γράψετε σε έναν πίνακα ( UPDATEή INSERT IGNORE ) με ένα δείκτη, έχετε πραγματικά δύο πράξεις γραφής στο σύστημα αρχείων. Μία για τα δεδομένα του πίνακα και μία άλλη για τα δεδομένα του δείκτη (και την καταφυγή του (και - αν συγκεντρωμένοι - η καταφυγή των δεδομένων πίνακα)). Εάν το τραπέζι και ο δείκτης βρίσκεται στον ίδιο σκληρό δίσκο αυτό κοστίζει περισσότερο χρόνο. Έτσι, ένα τραπέζι χωρίς ένα δείκτη (έναν σωρό), θα επέτρεπε την ταχύτερη λειτουργίες εγγραφής. (αν είχατε δύο δείκτες που θα καταλήξετε με τρεις λειτουργίες εγγραφής, και ούτω καθεξής)

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

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

Σε ορισμένα σενάρια ένας σωρός είναι πιο χρήσιμο από ένα τραπέζι με τους δείκτες,

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

Επίσης, μια διαφοροποίηση μεταξύ συμπλέγματος και μη-συμπλέγματος ευρετήρια είναι μάλλον σημαντική.

Με βοήθησε: - Τι συμπλέγματος και μη συγκεντρωτικό ευρετήριο σημαίνει στην πραγματικότητα;

Απαντήθηκε 30/04/2013 στις 15:31
πηγή χρήστη

ψήφοι
124

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

Για περισσότερες πληροφορίες, Θα ήθελα να συστήσω: Πώς λειτουργούν οι δείκτες της βάσης δεδομένων; Και, πώς ευρετήρια βοηθήσει;

Απαντήθηκε 20/02/2014 στις 15:40
πηγή χρήστη

ψήφοι
86

Τώρα, ας πούμε ότι θέλουμε να εκτελέσετε ένα ερώτημα για να βρείτε όλες τις λεπτομέρειες για τυχόν εργαζόμενοι που ονομάζονται «Abc»;

SELECT * FROM Employee 
WHERE Employee_Name = 'Abc'

Τι θα συμβεί χωρίς ένα ευρετήριο;

Λογισμικό βάσης δεδομένων θα πρέπει κυριολεκτικά να εξετάσουμε κάθε σειρά του πίνακα των εργαζομένων για να δούμε αν η Employee_name για την εν λόγω σειρά είναι «Abc». Και, επειδή θέλουμε κάθε γραμμή με το όνομα «Abc» μέσα σε αυτό, δεν μπορούμε να μείνουμε αναζητούν τη στιγμή που θα βρείτε μόνο μια γραμμή με το όνομα «Abc», επειδή θα μπορούσαν να υπάρξουν άλλες σειρές με το όνομα Abc . Έτσι, πρέπει να αναζητηθεί κάθε σειρά μέχρι την τελευταία σειρά - που σημαίνει χιλιάδες σειρές σε αυτό το σενάριο θα πρέπει να εξεταστεί από τη βάση δεδομένων για να βρείτε τις σειρές με το όνομα «Abc». Αυτό είναι αυτό που ονομάζεται πλήρης πίνακας σάρωση

Πώς ένα ευρετήριο βάσης δεδομένων μπορεί να βοηθήσει τις επιδόσεις

Το όλο νόημα της ύπαρξης ενός δείκτη είναι να επιταχύνει τα ερωτήματα αναζήτησης, ουσιαστικά μειώνοντας τον αριθμό των εγγραφών / γραμμών σε έναν πίνακα που πρέπει να εξεταστούν. Ένας δείκτης είναι μια δομή δεδομένων (συνηθέστερα α Β- δένδρο) που αποθηκεύει τις τιμές για ένα συγκεκριμένο στήλη σε έναν πίνακα.

Πώς λειτουργεί ο δείκτης Β-δέντρα;

Ο λόγος Β δέντρα είναι η πιο δημοφιλής δομή δεδομένων για δείκτες οφείλεται στο γεγονός ότι είναι αποδοτικό χρόνο - γιατί ματιά-ups, διαγραφές και προσθήκες, μπορεί να γίνει σε λογαριθμική χρόνο. Και, ένας άλλος σημαντικός λόγος είναι B- δένδρα που χρησιμοποιούνται πιο συχνά είναι επειδή τα δεδομένα που είναι αποθηκευμένα μέσα στο δέντρο B- μπορούν να ταξινομηθούν. Η RDBMS τυπικά καθορίζει ποια δομή δεδομένων χρησιμοποιείται πραγματικά για έναν δείκτη. Όμως, σε ορισμένα σενάρια με ορισμένες RDBMS, μπορείτε να καθορίσετε ποια πραγματικά δομή των δεδομένων που θέλετε βάση δεδομένων σας για να χρησιμοποιήσετε κατά τη δημιουργία του ίδιου του δείκτη.

Πώς λειτουργεί ένα δείκτη πίνακα κατακερματισμού;

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

Για παράδειγμα, το ερώτημα που συζητήσαμε νωρίτερα θα μπορούσαν να επωφεληθούν από ένα δείκτη κατακερματισμού που δημιουργείται στη στήλη Employee_name. Ο τρόπος με τον δείκτη κατακερματισμού θα μπορούσε να λειτουργήσει είναι ότι η τιμή της στήλης θα είναι το κλειδί στον πίνακα hash και η πραγματική τιμή αντιστοιχίζεται σε αυτό το κλειδί μόνο θα είναι ένας δείκτης για τα δεδομένα σειρά στον πίνακα. Δεδομένου ότι ένας πίνακας κατακερματισμού είναι βασικά ένα associative πίνακα, ένα τυπικό είσοδος θα δούμε κάτι σαν «Abc => 0x28939", όπου 0x28939 είναι μια αναφορά στην σειρά του πίνακα όπου Abc αποθηκεύεται στη μνήμη. Ψάχνετε μια τιμή όπως «Abc» σε ένα ευρετήριο πίνακα κατακερματισμού και να πάρει πίσω μια αναφορά στη σειρά στη μνήμη είναι προφανώς πολύ πιο γρήγορα από ό, τι σάρωση του πίνακα για να βρείτε όλες τις σειρές με αξία «Abc» στη στήλη Employee_name.

Τα μειονεκτήματα ενός δείκτη κατακερματισμού

Hash πίνακες δεν ταξινομούνται δομές δεδομένων, και υπάρχουν πολλά είδη των ερωτημάτων που ευρετήρια κατακερματισμού δεν μπορεί ακόμη και να βοηθήσει με. Για παράδειγμα, ας υποθέσουμε ότι θέλετε να μάθετε όλα των εργαζομένων που είναι κάτω των 40 ετών. Πώς θα μπορούσατε να το κάνετε αυτό με ένα δείκτη πίνακα κατακερματισμού; Λοιπόν, δεν είναι δυνατόν επειδή ένας πίνακας κατακερματισμού είναι μόνο καλό για την αναζήτηση βασικά ζεύγη τιμών - που σημαίνει ερωτήματα που ελέγχουν για την ισότητα

Τι ακριβώς είναι μέσα σε ένα ευρετήριο βάσης δεδομένων; Έτσι, τώρα ξέρετε ότι ένας δείκτης βάση δεδομένων που δημιουργήθηκε σε μια στήλη σε έναν πίνακα, και ότι ο δείκτης αποθηκεύει τις τιμές στη συγκεκριμένη στήλη. Όμως, είναι σημαντικό να κατανοήσουμε ότι ένα ευρετήριο βάσης δεδομένων δεν αποθηκεύει τις τιμές στις άλλες στήλες του ίδιου πίνακα. Για παράδειγμα, αν δημιουργήσετε ένα ευρετήριο για τη στήλη Employee_name, αυτό σημαίνει ότι οι τιμές της στήλης Employee_Age και Employee_Address δεν αποθηκεύονται επίσης στο ευρετήριο. Αν είχαμε μόνο αποθηκεύσετε όλες τις άλλες στήλες στο ευρετήριο, τότε θα ήταν ακριβώς όπως τη δημιουργία ένα άλλο αντίγραφο ολόκληρου του πίνακα - η οποία θα διαρκέσει έως πάρα πολύ χώρο και θα είναι πολύ αναποτελεσματική.

Πώς μια βάση δεδομένων ξέρει πότε να χρησιμοποιήσει ένα δείκτη; Όταν ένα ερώτημα όπως «SELECT * FROM εργαζομένων, εφόσον Employee_name =" Abc»λειτουργεί, η βάση δεδομένων θα ελέγξει για να δει αν υπάρχει ένα ευρετήριο για τη στήλη (α) να ερωτηθούν. Αν υποθέσουμε ότι η στήλη Employee_name έχει ένα δείκτη που δημιουργήθηκε σε αυτό, η βάση δεδομένων θα πρέπει να αποφασίσει αν θα κάνει πραγματικά νόημα να χρησιμοποιήσετε το ευρετήριο για να βρείτε τις τιμές που αναζητήσατε - επειδή υπάρχουν κάποια σενάρια όπου στην πραγματικότητα είναι λιγότερο αποτελεσματική για να χρησιμοποιήσετε το ευρετήριο βάσης δεδομένων και πιο αποτελεσματική μόνο για να σαρώσει το σύνολο του πίνακα.

Ποιο είναι το κόστος της έχει δείκτη βάσης δεδομένων;

Παίρνει χώρο - και το μεγαλύτερο τραπέζι σας, το μεγαλύτερο δείκτη σας. Ένα άλλο χτύπημα απόδοση με δείκτες είναι το γεγονός ότι κάθε φορά που θα προσθέσετε, να διαγράψετε ή σειρές ενημέρωση στον αντίστοιχο πίνακα, οι ίδιες ενέργειες θα πρέπει να γίνουν στο ευρετήριο σας. Να θυμάστε ότι ο δείκτης θα πρέπει να περιέχουν το ίδιο μέχρι τα στοιχεία λεπτό, όπως ό, τι είναι στη στήλη (α) πίνακα ότι ο δείκτης καλύπτει.

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

Δείτε επίσης

  1. Τι στήλες κάνει γενικά καλό ευρετήρια;
  2. Πώς ευρετήρια βάση δεδομένων δουλεύουν
Απαντήθηκε 13/08/2016 στις 18:36
πηγή χρήστη

ψήφοι
64

Κλασικό παράδειγμα «Δείκτη Βιβλία»

Θεωρήστε ένα κάθε τμήμα με τις σελίδες Χ «Βιβλίο» 1000 σελίδες, διαιρούμενο με 100 τμήματα,.

Απλά, ε;

Τώρα, χωρίς μια σελίδα ευρετηρίου, για να βρείτε ένα συγκεκριμένο τμήμα που αρχίζει με το γράμμα «S», δεν έχετε καμία άλλη επιλογή από τη σάρωση σε όλο το βιβλίο. δηλαδή: σελίδες 1000

Αλλά με μια σελίδα δείκτη στην αρχή, είσαι εκεί. Και περισσότερο, να διαβάσει κάθε συγκεκριμένο τμήμα που έχει σημασία, το μόνο που χρειάζεται να κοιτάξουν πέρα ​​από την αρχική σελίδα, ξανά και ξανά, κάθε φορά. Μετά την εύρεση του δείκτη ταιριάζουν μπορείτε αποτελεσματικά να μεταβείτε στην ενότητα παρακάμπτοντας τα άλλα τμήματα.

Στη συνέχεια, όμως, εκτός από 1000 σελίδες, θα χρειαστείτε ένα άλλο ~ 10 σελίδες για να εμφανίσετε τη σελίδα ευρετηρίου, τόσο συνολικά 1010 σελίδες.

Έτσι, ο δείκτης είναι ένα ξεχωριστό τμήμα που αποθηκεύει τιμές του δείκτη στήλης + δείκτη στο ευρετήριο σειρά σε ένα ταξινομημένη σειρά για την αποτελεσματική look-up.

Τα πράγματα είναι απλά στα σχολεία, έτσι δεν είναι; :Π

Απαντήθηκε 23/04/2017 στις 14:43
πηγή χρήστη

ψήφοι
40

Απλή Περιγραφή !!!!!!!!!!

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

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

Τώρα, ας πούμε ότι θέλουμε να εκτελέσετε ένα ερώτημα για να βρείτε όλες τις λεπτομέρειες για όλους τους χρήστες που έχουν το όνομα «Ιωάννης». Εάν εκτελέσετε το παρακάτω ερώτημα.

SELECT * FROM User 
WHERE Name = 'John'

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

CREATE INDEX name_index
ON User (Name)

Ένας δείκτης αποτελείται από τιμές της στήλης (Π.χ.: John) από έναν πίνακα, και ότι οι τιμές αυτές αποθηκεύονται σε μια δομή δεδομένων.
Έτσι τώρα η βάση δεδομένων θα χρησιμοποιήσετε το δείκτη για να βρει τους εργαζόμενους που ονομάζεται John, επειδή ο δείκτης θα πιθανώς να ταξινομηθούν αλφαβητικά με το όνομα τους χρήστες. Και, επειδή είναι ταξινομημένο, αυτό σημαίνει ότι η αναζήτηση για ένα όνομα είναι πολύ πιο γρήγορα, γιατί όλα τα ονόματα που αρχίζουν με «J» θα είναι δίπλα στο άλλο στο ευρετήριο!

Απαντήθηκε 02/08/2016 στις 01:30
πηγή χρήστη

ψήφοι
18

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

Απαντήθηκε 14/01/2015 στις 06:44
πηγή χρήστη

ψήφοι
14

Αρκεί να σκεφτούμε Βάση δεδομένων Δείκτης ως δείκτης ενός βιβλίου. Αν έχετε ένα βιβλίο για τα σκυλιά και θέλετε να βρείτε πληροφορίες για το ας πούμε, γερμανική Shepherds, θα μπορούσε φυσικά ξεφυλλίσετε όλες τις σελίδες του βιβλίου και βρείτε αυτό που ψάχνετε, αλλά αυτό βέβαια είναι χρονοβόρα και δεν είναι πολύ γρήγορα. Μια άλλη επιλογή είναι ότι, θα μπορούσατε απλά να πάτε στο τμήμα Δείκτη του βιβλίου και στη συνέχεια να βρείτε αυτό που ψάχνετε, χρησιμοποιώντας το όνομα της οντότητας που ψάχνετε (σε αυτή την περίπτωση, η γερμανική Shepherds) και, επίσης, κοιτάζοντας τον αριθμό σελίδας για να γρήγορα να βρείτε αυτό που ψάχνετε. Στη βάση δεδομένων, ο αριθμός σελίδας αναφέρεται ως ένα δείκτη που κατευθύνει τη βάση δεδομένων στη διεύθυνση στο δίσκο όπου βρίσκεται οντότητα. Χρησιμοποιώντας την ίδια γερμανική αναλογία Shepherd, θα μπορούσαμε να έχουμε κάτι σαν αυτό ( «Γερμανικός Ποιμενικός», 0x77129) όπου 0x77129 είναι η διεύθυνση στο δίσκο όπου αποθηκεύονται τα δεδομένα σειρά για Γερμανικός Ποιμενικός.

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

Απαντήθηκε 21/12/2016 στις 17:16
πηγή χρήστη

ψήφοι
7

Δείκτης SQL είναι κάτι που σχετίζονται με την επιτάχυνση της αναζήτησης σε βάση δεδομένων SQL. Δείκτης επιτρέπει προγραμματιστής για να ανακτήσετε τα δεδομένα από τη βάση δεδομένων πολύ γρήγορα. Ας υποθέσουμε ότι είστε φοιτητής ή κάποια συσκευή ανάγνωσης βιβλίων. Το βιβλίο σας περιέχει 50.000 σελίδες. Πρώτη μέρα μπορείτε να διαβάσετε μερικά θέμα «ABC» επόμενη μέρα θέλετε να διαβάσετε κάποιο άλλο θέμα «xyz». ποτέ δεν θα πάει με το χέρι μέσα από τη σελίδα προς σελίδα. Τι θα κάνετε σε αυτή την κατάσταση είναι η χρήση του δείκτη βιβλίο για να δείτε το κάποιο συγκεκριμένο θέμα και στη συνέχεια Μετάβαση απευθείας με το θέμα σας. Δείκτης έσωσε πολλά σας χρόνο να ψάξει το θέμα. Το ίδιο το SQL δείκτη, δείκτης επιτρέπει να αναζητήσετε εκατομμύρια αρχεία πολύ γρήγορα από τη βάση δεδομένων.

Απαντήθηκε 15/02/2018 στις 10:17
πηγή χρήστη

ψήφοι
2

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

Απαντήθηκε 09/07/2018 στις 05:33
πηγή χρήστη

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more