MySQL Εκμάθηση ευρετηρίου – Δημιουργία, προσθήκη και απόθεση

Τι είναι το ευρετήριο;

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

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

Τι χρήση ενός Ευρετηρίου;

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

MySQL Περιεχόμενα

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

Σύνταξη: Δημιουργία ευρετηρίου

Τα ευρετήρια μπορούν να οριστούν με 2 τρόπους

  1. Την ώρα της δημιουργίας του τραπεζιού
  2. Μετά τη δημιουργία του πίνακα

Παράδειγμα:

Για το myflixdb αναμένουμε πολλές αναζητήσεις στη βάση δεδομένων με το πλήρες όνομα.

Θα προσθέσουμε τη στήλη "full_names" στο Index σε έναν νέο πίνακα "members_indexed".

Το σενάριο που φαίνεται παρακάτω μας βοηθά να το πετύχουμε.

CREATE TABLE `members_indexed` (
  `membership_number` int(11) NOT NULL AUTO_INCREMENT,
  `full_names` varchar(150) DEFAULT NULL,
  `gender` varchar(6) DEFAULT NULL,
  `date_of_birth` date DEFAULT NULL,
  `physical_address` varchar(255) DEFAULT NULL,
  `postal_address` varchar(255) DEFAULT NULL,
  `contact_number` varchar(75) DEFAULT NULL,
  `email` varchar(255) DEFAULT NULL,
  PRIMARY KEY (`membership_number`),INDEX(full_names)
) ENGINE=InnoDB;

Εκτελέστε την παραπάνω δέσμη ενεργειών SQL στο MySQL πάγκος εργασίας έναντι του "myflixdb".

MySQL Δημιουργία ευρετηρίου

Η ανανέωση του myflixdb εμφανίζει τον πρόσφατα δημιουργημένο πίνακα με το όνομα Member_indexed.

"Σημείωση" Ο πίνακας Member_indexed έχει "full_names" στον κόμβο ευρετηρίων.

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

Προσθήκη βασικής σύνταξης ευρετηρίου

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

Μπορούμε να χρησιμοποιήσουμε το ακόλουθο ερώτημα για να προσθέσουμε ευρετήριο

CREATE INDEX id_index ON table_name(column_name);

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

CREATE INDEX `title_index` ON `movies`(`title`);

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

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

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

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

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

SHOW INDEXES FROM table_name;

Ας ρίξουμε τώρα μια ματιά σε όλα τα ευρετήρια που ορίζονται στον πίνακα ταινιών στο myflixdb.

SHOW INDEXES FROM `movies`;

Εκτέλεση του παραπάνω σεναρίου στο MySQL πάγκος εργασίας έναντι του myflixdb μας δίνει αποτελέσματα σχετικά με τη δημιουργία ευρετηρίου.

Σημείωση: Το πρωτεύον και το ξένο κλειδί στον πίνακα έχουν ήδη ευρετηριαστεί από MySQL. Κάθε ευρετήριο έχει το δικό του μοναδικό όνομα και εμφανίζεται επίσης η στήλη στην οποία ορίζεται.

Σύνταξη: Απόθεση ευρετηρίου

Η εντολή drop χρησιμοποιείται για την αφαίρεση ήδη καθορισμένων ευρετηρίων σε έναν πίνακα.

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

DROP INDEX `index_id` ON `table_name`;

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

DROP INDEX ` full_names` ON `members_indexed`;

Η εκτέλεση της παραπάνω εντολής απορρίπτει το ευρετήριο με το αναγνωριστικό « full_names » από τον πίνακα Member_indexed.

Σύνοψη

  • Οι δείκτες είναι πολύ ισχυροί όταν πρόκειται να βελτιώσουν σημαντικά την απόδοση του MySQL ερωτήματα αναζήτησης.
  • Τα ευρετήρια μπορούν να οριστούν κατά τη δημιουργία ενός πίνακα ή να προστεθούν αργότερα αφού ο πίνακας έχει ήδη δημιουργηθεί.
  • Μπορείτε να ορίσετε ευρετήρια σε περισσότερες από μία στήλες σε έναν πίνακα.
  • Το SHOW INDEX FROM table_name χρησιμοποιείται για την εμφάνιση των καθορισμένων ευρετηρίων σε έναν πίνακα.
  • Η εντολή DROP χρησιμοποιείται για την αφαίρεση ενός καθορισμένου ευρετηρίου σε έναν δεδομένο πίνακα.