Συστάσεις. Όταν μια διαδικασία μεταγλωττίζεται για πρώτη φορά ή επαναμεταγλωττίζεται, το σχέδιο ερωτημάτων της διαδικασίας βελτιστοποιείται για την τρέχουσα κατάσταση της βάσης δεδομένων και των αντικειμένων της. … Ένας άλλος λόγος για να αναγκάσετε μια διαδικασία να επαναμεταγλωττιστεί είναι για να εξουδετερώσετε τη συμπεριφορά "sniffing παραμέτρων" της μεταγλώττισης διαδικασίας.
Πρέπει να αποφεύγονται οι αποθηκευμένες διαδικασίες;
Αποθηκευμένες διαδικασίες προωθούν κακές πρακτικές ανάπτυξης, ιδίως απαιτούν από εσάς να παραβιάσετε το DRY (Don't Repeat Yourself), καθώς πρέπει να πληκτρολογήσετε τη λίστα των πεδίων στο πίνακας βάσης δεδομένων τουλάχιστον μισή ντουζίνα φορές ή περισσότερες. Αυτό είναι τεράστιος πόνος αν χρειαστεί να προσθέσετε μία στήλη στον πίνακα της βάσης δεδομένων σας.
Τι είναι το Sp_recompile;
sp_recompile αναζητά ένα αντικείμενο μόνο στην τρέχουσα βάση δεδομένων. Τα ερωτήματα που χρησιμοποιούνται από αποθηκευμένες διαδικασίες ή ενεργοποιητές και συναρτήσεις που καθορίζονται από το χρήστη βελτιστοποιούνται μόνο όταν μεταγλωττίζονται. … Ο SQL Server μεταγλωττίζει αυτόματα τις αποθηκευμένες διαδικασίες, τους κανόνες ενεργοποίησης και τις συναρτήσεις που καθορίζονται από το χρήστη όταν είναι πλεονεκτικό να γίνει αυτό.
Τι κάνει με το recompile στην SQL;
RECOMPILE – καθορίζει ότι μετά την εκτέλεση του ερωτήματος, το σχέδιο εκτέλεσης του ερωτήματος που είναι αποθηκευμένο στην κρυφή μνήμη αφαιρείται από την κρυφή μνήμη. Όταν το ίδιο ερώτημα εκτελεστεί ξανά, δεν θα υπάρχει υπάρχον σχέδιο στην κρυφή μνήμη, επομένως το ερώτημα θα πρέπει να μεταγλωττιστεί εκ νέου.
Είναι αποτελεσματικές οι αποθηκευμένες διαδικασίες;
Αυτό περιλαμβάνει πράγματα όπως το κενό διάστημα και η ευαισθησία πεζών-κεφαλαίων. Είναι πολύ λιγότερο πιθανό ένα ερώτημα μέσα σε μια αποθηκευμένη διαδικασία να αλλάξει σε σύγκριση με ένα ερώτημα που είναι ενσωματωμένο στον κώδικα. … Εξαιτίας αυτού, η αποθηκευμένη διαδικασία μπορεί στην πραγματικότητα να εκτελείται πιο γρήγορα επειδή ήταν σε θέση να επαναχρησιμοποιήσει ένα αποθηκευμένο σχέδιο.