Συμπτώματα
Ας υποθέσουμε ότι έχετε έναν πίνακα που χρησιμοποιεί περιορισμό εξωτερικού κλειδιού που έχει οριστεί για διαδοχική διαγραφή και τα στατιστικά στοιχεία στη στήλη εξωτερικού κλειδιού δεν καλύπτουν ολόκληρη την περιοχή των τιμών κλειδιού στον πίνακα (για παράδειγμα: επειδή τα στατιστικά στοιχεία δεν ενημερώθηκαν μετά την αλλαγή της κατανομής δεδομένων στον πίνακα). Σε αυτό το σενάριο, όταν προσπαθείτε να διαγράψετε μια γραμμή που αντιστοιχεί σε μια βασική τιμή που δεν αναπαρπαράται στο ιστόγραμμα στατιστικών στοιχείων και ο βελτιστοποίησης ερωτήματος χρησιμοποιεί την προεπιλεγμένη εκτίμηση πληθικότητας, η λειτουργία διαγραφής είναι πιο αργή από το αναμενόμενο. Επίσης, ενδέχεται να παρατηρήσετε ότι χρησιμοποιείται μια λειτουργία σάρωσης ευρετηρίου για την εύρεση των γραμμών που ταιριάζουν στον πίνακα παραπομπής.
Κατάσταση
Η Microsoft έχει επιβεβαιώσει ότι αυτό είναι ένα πρόβλημα στα προϊόντα της Microsoft που αναφέρονται στην ενότητα "Ισχύει για".
Επίλυση
Αυτό το πρόβλημα έχει διορθωθεί στις παρακάτω αθροιστικές ενημερώσεις για τον SQL Server:
Σημείωση: Αυτή η επιδιόρθωση ενεργοποιείται μόνο όταν ενεργοποιείτε τις άμεσες επιδιορθώσεις βελτιστοποίησης (είτε μέσω της επιλογής ρύθμισης παραμέτρων εμβέλειας βάσης δεδομένων, υπόδειξης ερωτήματος ή σημαίας ανίχνευσης 4199).
Πληροφορίες για τις αθροιστικές ενημερώσεις για τον SQL Server:
Κάθε νέα αθροιστική ενημέρωση για τον SQL Server περιέχει όλες τις άμεσες επιδιορθώσεις και όλες τις επιδιορθώσεις ασφαλείας που περιλαμβάνονταν στην προηγούμενη αθροιστική ενημέρωση. Δείτε τις πιο πρόσφατες αθροιστικές ενημερώσεις για τον SQL Server:
Λύση
Για να επιλύσετε αυτό το πρόβλημα, χρησιμοποιήστε μία από τις ακόλουθες μεθόδους:
-
Χρησιμοποιήστε εκτίμηση πληθικότητας παλαιού τύπου. Για περισσότερες πληροφορίες, ανατρέξτε στο θέμα Εκτίμηση πληθικότητας (SQL Server).
-
Καταργήστε την διαδοχική διαγραφή από τον ορισμό εξωτερικού κλειδιού και εκτελέστε τη λειτουργία διαγραφής χρησιμοποιώντας τη λειτουργία JOIN μεταξύ γονικού και θυγατρικού πίνακα για να επιτύχετε το ισοδύναμο της διαδοχικής διαγραφής.
-
Ενημερώστε στατιστικά στοιχεία στον γονικό πίνακα με τη fullSCAN πριν από τη διαγραφή δεδομένων.
Αναφορές
Μάθετε περισσότερα σχετικά με την ορολογία που χρησιμοποιεί η Microsoft για την περιγραφή των ενημερώσεων λογισμικού.