Sobes.tech
Junior — Middle

Τι μπορεί να οδηγήσει το PostgreSQL στο να μην χρησιμοποιεί δείκτη κατά την εκτέλεση αναζήτησης σε ένα συγκεκριμένο πεδίο;

sobes.tech AI

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

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

  • Χαμηλή επιλεκτικότητα του ερωτήματος: εάν η συνθήκη αναζήτησης επιστρέφει μεγάλο ποσοστό γραμμών, ο σχεδιαστής μπορεί να επιλέξει μια σειριακή σάρωση, καθώς είναι πιο αποδοτική.
  • Τύποι δεδομένων ή λειτουργίες που δεν είναι συμβατές με τον δείκτη: για παράδειγμα, η χρήση συναρτήσεων ή λειτουργιών που δεν υποστηρίζουν δείκτες (όπως το LIKE '%pattern') ή ασυμβατότητα τύπων δεδομένων.
  • Έλλειψη στατιστικών ή παρωχημένα στατιστικά: εάν τα στατιστικά του πίνακα δεν είναι ενημερωμένα (ANALYZE), ο σχεδιαστής μπορεί να πάρει λανθασμένη απόφαση.
  • Χρήση εκφράσεων που δεν καλύπτονται από τον δείκτη: για παράδειγμα, αναζήτηση σε υπολογιζόμενο πεδίο χωρίς κατάλληλο λειτουργικό δείκτη.
  • Παραμέτρους διαμόρφωσης: για παράδειγμα, μια πολύ υψηλή τιμή του random_page_cost μπορεί να επηρεάσει την επιλογή του σχεδίου.

Παράδειγμα: αν έχετε δείκτη στο πεδίο name, αλλά το ερώτημα χρησιμοποιεί WHERE LOWER(name) = 'abc', και ο δείκτης δεν είναι λειτουργικός στο LOWER(name), ο δείκτης δεν θα χρησιμοποιηθεί.