Sobes.tech
Junior

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

sobes.tech AI

Απάντηση από AI

Ο δείκτης είναι μια τεχνική βελτιστοποίησης της απόδοσης κατά την ανάκτηση δεδομένων.

Σε βάσεις δεδομένων, ένας δείκτης είναι μια δομή (π.χ., ένα δέντρο B) που επιτρέπει την ταχεία εύρεση γραμμών σε έναν πίνακα, χωρίς να διατρέχει ολόκληρο τον πίνακα. Δημιουργείται σε μία ή περισσότελες στήλες.

Στις συλλογές (π.χ., το ArrayList στη Java), η ευρετηρίαση είναι ουσιαστικά ενσωματωμένη. Τα στοιχεία αποθηκεύονται σε μια διατεταγμένη ακολουθία, και η πρόσβαση σε οποιοδήποτε στοιχείο μέσω δείκτη (αριθμός σειράς) πραγματοποιείται σε χρόνο O(1).

Οι κύριοι στόχοι της ευρετηρίασης:

  • Επιτάχυνση της εκτέλεσης ερωτημάτων: Ιδιαίτερα για λειτουργίες SELECT με συνθήκες WHERE και JOIN.
  • Εξασφάλιση μοναδικότητας: Οι μοναδικοί δείκτες διασφαλίζουν ότι οι τιμές στη δείκτη στήλη ή στον συνδυασμό στηλών θα είναι μοναδικές.
  • Υποστήριξη ταξινόμησης: Οι δείκτες μπορούν να χρησιμοποιηθούν για γρήγορη ταξινόμηση αποτελεσμάτων (ORDER BY).

Παραδείγματα χρήσης σε SQL:

-- Δημιουργία δείκτη στη στήλη τιμής
CREATE INDEX idx_products_price ON products (price);

-- Δημιουργία σύνθετου δείκτη στις στήλες customer_id και order_date
CREATE INDEX idx_orders_customer_date ON orders (customer_id, order_date);

Στις συλλογές, πρόσβαση μέσω δείκτη:

// Απόκτηση στοιχείου μέσω δείκτη
List<String> names = new ArrayList<>();
names.add("Alice");
names.add("Bob");
String firstElement = names.get(0); // Πρόσβαση μέσω δείκτη 0

Μειονεκτήματα της ευρετηρίασης:

  • Καταλαμβάνει επιπλέον χώρο στον δίσκο.
  • Οι λειτουργίες τροποποίησης δεδομένων (INSERT, UPDATE, DELETE) γίνονται πιο αργές, καθώς πρέπει να ενημερωθεί και ο δείκτης.
  • Δεν χρησιμοποιείται πάντα από τον βελτιστοποιητή ερωτημάτων (π.χ., σε πλήρεις σαρώσεις πίνακα).