Sobes.tech
Senior

Ποιο σύνθετο δείκτη θα κάνατε;

sobes.tech AI

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

Κατά τη δημιουργία ενός σύνθετου δείκτη για τις συνθήκες WHERE A=a AND B=b και WHERE B=b AND A=a, είναι σημαντικό να λαμβάνεται υπόψη η σειρά των στηλών στον δείκτη και η συχνότητα φιλτραρίσματος.

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

  • Εάν το A είναι πιο επιλεκτικό, είναι καλύτερος ένας δείκτης (A, B).
  • Εάν το B είναι πιο επιλεκτικό, είναι καλύτερος (B, A).

Επίσης, πρέπει να ληφθεί υπόψη ότι ένας δείκτης (A, B) χρησιμοποιείται αποτελεσματικά για ερωτήματα με φίλτρο σε A ή σε A και B, αλλά όχι μόνο σε B.

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

Παράδειγμα δημιουργίας δείκτη σε SQL:

CREATE INDEX idx_a_b ON table_name (A, B);