Πριν από την έναρξη της πραγματικής εργασίας να απαντήσει σε ένα ερώτημα , Oracle κοιτάζει γύρω και να κάνει μια απόφαση για το τι νομίζει ότι είναι ο καλύτερος τρόπος για να εκτελέσετε το ερώτημα . Αυτή είναι η βελτιστοποίηση . Καθορίζει τον πιο αποτελεσματικό τρόπο για να εκτελέσει μια δήλωση SQL λαμβάνοντας υπόψη πολλά χαρακτηριστικά που σχετίζονται με τα αντικείμενα που αναφέρονται και στις περιπτώσεις που ορίζονται στο ερώτημα .
Ακόμα κι αν σχεδιάσετε την εφαρμογή σας με τη χρήση έξυπνων δημιουργημένο κώδικα , θα βρείτε ακόμα ότι υπάρχουν συμβουλές που απαιτούνται για τις δηλώσεις πριν από την optimizer ακολουθεί την " βέλτιστη " διαδρομή εκτέλεσης . Μερικές φορές η βελτιστοποίηση μπορεί να χρειάζονται βοήθεια λόγω ελαττωμάτων στο μοντέλο ή μητρική προβλήματα κατά τη συλλογή , αποθήκευση και επεξεργασία πολύπλοκων δεδομένων . Συμβουλές μπορεί να αναγκάσει τον optimizer για να κάνουν την καλύτερη δυνατή πορεία εκτέλεσης για ένα ερώτημα , δεν έχει σημασία ποια είναι η ανεπάρκεια . Ωστόσο , προτείνοντας συμβουλές για την βελτιστοποίησης θα πρέπει να επιχειρείται μόνο όταν είναι απολύτως απαραίτητο και αν είστε ένας έμπειρος προγραμματιστής .
Εικόνων Τύποι Συμβουλή
Η
Oracle έχει τρία είδη υποδείξεις .
Εγγραφή HintThe ενταχθούν υπόδειξη χρησιμοποιείται όταν περισσότερα από ένα πίνακα χρησιμοποιείται σε ένα ερώτημα . Αυτή η υπόδειξη αναγκάζει τον τύπο του συνδέσμου διαδικασία που χρησιμοποιείται . Ενώνει μπορεί να χρησιμοποιηθεί σε SELECT , UPDATE και DELETE δηλώσεις . Το ακόλουθο ΟΔΗΓΕΙ υπόδειξη προτείνει ενταχθούν παραγγελίες :
/* + ΟΔΗΓΕΙ ( [ @ queryblock ] tablespec [ tablespec ] ... ) * /
Ερώτημα Τιμή ερώτημα υπόδειξη χρησιμοποιείται όταν ειδικές λογική πρέπει να να είναι λειτουργική σε ένα ολόκληρο ερώτημα , σε αντίθεση με μέρος της. Από την άλλη πλευρά , δεν υπάρχει κανένας τρόπος να καθοριστεί ποιο μέρος ενός ερωτήματος πρέπει να χρησιμοποιείται με την υπόδειξη. Ένα ερώτημα έχει πάντα το SELECT , UPDATE , DELETE , INSERT ή MERGE δήλωση. Η ακόλουθη υπόδειξη μπορεί να χρησιμοποιηθεί με όλα αυτά :
επιλέξετε /* + * ΥΠΟΔΕΙΞΗ /namefrom empwhere id = 1 ?
HintHints πίνακα που καθορίζουν ένα τραπέζι συνήθως αναφέρονται σε πίνακες στο DELETE , SELECT , UPDATE ή τη δήλωση ενός ερωτήματος στο οποίο λαμβάνει χώρα η υπόδειξη , όχι σε πίνακες στο εσωτερικό των απόψεων που ενδεχομένως μεταφέρονται από τη δήλωση . Το ερώτημα optimizer επιλέγει συνήθως η καλύτερη μέθοδος βελτιστοποίησης χωρίς υπαινιγμούς που ορίζεται . Ωστόσο , αν και μπορείτε να καθορίσετε μια υπόδειξη πίνακα στον κώδικά σας , η βελτιστοποίηση του ερωτήματος μπορεί να αγνοήσει την υπόδειξη . Υποδείξεις πίνακα θα αγνοηθεί αν ο πίνακας δεν έχει επιλεγεί από το ερώτημα optimizer και να χρησιμοποιηθούν κατά το επόμενο σχέδιο ερωτήματος
επιλέξετε /* + * ALL_ROWS /employee_id , last_name , μισθός , job_idfrom empwhere employee_id = 4689 ? .
Η
εικόνων
Πνευματικά δικαιώματα © Γνώση Υπολογιστών Όλα τα δικαιώματα κατοχυρωμένα