Oracle Create Index

Oracle Create Index



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

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







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



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



Για να το ξεπεράσουμε αυτό, μπορούμε να χρησιμοποιήσουμε ένα ευρετήριο βάσης δεδομένων.





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

Σε αυτό το σεμινάριο, θα μάθετε πώς να χρησιμοποιείτε την εντολή CREATE INDEX στη βάση δεδομένων Oracle για την προετοιμασία ενός νέου ευρετηρίου.



Δήλωση ευρετηρίου δημιουργίας Oracle

Το παρακάτω δείχνει τη σύνταξη της δήλωσης CREATE INDEX στις βάσεις δεδομένων Oracle:

ΔΗΜΙΟΥΡΓΙΑ INDEX index_name
ON table_name (στήλη 1, στήλη 2, ...);

Η παραπάνω σύνταξη δημιουργεί ένα ευρετήριο με το όνομα index_name στον πίνακα με το όνομα table_name χρησιμοποιώντας τις καθορισμένες στήλες (στήλη1, στήλη2, κ.λπ.) ως κλειδί για το ευρετήριο.

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

Ωστόσο, σε ορισμένες περιπτώσεις, μπορεί να χρειαστεί να δημιουργήσετε ένα νέο ευρετήριο για έναν συγκεκριμένο πίνακα με μη αυτόματο τρόπο.

Ας δούμε μερικά παραδείγματα για το πώς μπορούμε να το πετύχουμε αυτό.

Παράδειγμα ευρετηρίου δημιουργίας Oracle

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

επιλέξτε όνομα, επώνυμο, μισθός, ημερομηνία πρόσληψης από ΕΡΓΑΖΟΜΕΝΟΥΣ.

Oracle Create Index για μια μεμονωμένη στήλη

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

δημιουργία ευρετηρίου first_name_lookup στο EMPLOYEES(FIRST_NAME);

Αυτή η δήλωση CREATE INDEX δημιουργεί ένα ευρετήριο με το όνομα first_name_lookup στον πίνακα EMPLOYEES, χρησιμοποιώντας τη στήλη FIRST_NAME ως κλειδί για το ευρετήριο. Αυτό το ευρετήριο μπορεί να χρησιμοποιηθεί για τη βελτίωση της απόδοσης των ερωτημάτων που αναζητούν υπαλλήλους με το μικρό τους όνομα.

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

ΕΠΙΛΕΞΤΕ όνομα, επώνυμο, μισθός, ημερομηνία μίσθωσης
ΑΠΟ εργαζομένους
WHERE first_name = 'William';

Αποτέλεσμα:

Χωρίς το ευρετήριο first_name_lookup, το σύστημα βάσης δεδομένων θα έπρεπε να σαρώσει ολόκληρο τον πίνακα EMPLOYEES για να βρει όλες τις σειρές όπου η στήλη FIRST_NAME είναι ίση με 'William'. Ωστόσο, με το ευρετήριο στη θέση του, το σύστημα βάσης δεδομένων μπορεί να αναζητήσει γρήγορα τις σειρές στο ευρετηριάστε χρησιμοποιώντας την τιμή 'John' ως κλειδί και στη συνέχεια ανακτήστε τις ζητούμενες σειρές από τον πίνακα, κάτι που θα είναι πολύ πιο γρήγορο.

Μπορείτε να δείτε τα βήματα που χρησιμοποιούνται κατά την υποβολή του ερωτήματος χρησιμοποιώντας την εντολή εξήγησης σχεδίου όπως φαίνεται:

εξηγήστε το σχέδιο για SELECT first_name, last_name, μισθός, hire_date
ΑΠΟ εργαζομένους
WHERE first_name = 'William';

Σχέδιο ερωτήματος που προκύπτει:

Παράδειγμα 2 – Oracle Create Index με πολλαπλές στήλες

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

Μπορούμε να χρησιμοποιήσουμε τον κώδικα όπως φαίνεται:

δημιουργία ευρετηρίου multi_lookup σε EMPLOYEES(FIRST_NAME, LAST_NAME);

Αυτή η δήλωση CREATE INDEX δημιουργεί ένα ευρετήριο με το όνομα multi_lookup στον πίνακα EMPLOYEES, χρησιμοποιώντας τις στήλες FIRST_NAME και LAST_NAME ως κλειδί για το ευρετήριο.

Μόλις δημιουργηθεί, μπορούμε να χρησιμοποιήσουμε αυτό το ευρετήριο όπως φαίνεται στο δείγμα ερωτήματος όπως φαίνεται:

ΕΠΙΛΕΞΤΕ όνομα, επώνυμο, μισθός, ημερομηνία μίσθωσης
ΑΠΟ εργαζομένους
WHERE first_name = 'William' AND last_name = 'Smith';

Προκύπτουσα τιμή:

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

συμπέρασμα

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