Ποιο σύνθετο δείκτη θα κάνατε;
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);