Ένα ερώτημα ζητά συγκεκριμένα δεδομένα από μια βάση δεδομένων. Στην SQL, ένα ερώτημα χρησιμοποιεί την εντολή SELECT για να καθορίσει στήλες, την εντολή FROM για να καθορίσει πίνακες και την εντολή WHERE για να φιλτράρει γραμμές. Η εντολή JOIN συνδυάζει πίνακες. Η εντολή GROUP BY αθροίζει. Η εντολή ORDER BY ταξινομεί. Η βάση δεδομένων αναλύει το ερώτημα, σχεδιάζει μια στρατηγική εκτέλεσης και επιστρέφει τα αποτελέσματα. Η ίδια ερώτηση μπορεί να τεθεί με πολλούς τρόπους και ορισμένοι τρόποι είναι πολύ πιο γρήγοροι από άλλους.
Η απόδοση των ερωτημάτων εξαρτάται από διάφορους παράγοντες. Τα ευρετήρια επιταχύνουν τις αναζητήσεις σε φιλτραρισμένες στήλες. Ο σχεδιαστής ερωτημάτων επιλέγει μεταξύ διαφορετικών στρατηγικών εκτέλεσης με βάση τα στατιστικά στοιχεία σχετικά με τα δεδομένα. Τα ξεπερασμένα στατιστικά στοιχεία οδηγούν σε κακά σχέδια. Η σύνταξη ενός ερωτήματος που χρησιμοποιεί αποτελεσματικά τα ευρετήρια είναι μια δεξιότητα. Μια συνάρτηση που εφαρμόζεται σε μια στήλη με ευρετήριο σε μια ρήτρα WHERE εμποδίζει τη χρήση του ευρετηρίου. Ένα ερώτημα που επιλέγει όλες τις στήλες όταν χρειάζονται μόνο μερικές σπαταλά εύρος ζώνης και μνήμη. Ένα υποερώτημα που εκτελείται μία φορά ανά γραμμή είναι αργό. Η ίδια λογική με μια ένωση είναι γρήγορη. Η βελτιστοποίηση ερωτημάτων είναι εν μέρει τέχνη, εν μέρει επιστήμη. Η βάση δεδομένων παρέχει εργαλεία: ΕΞΗΓΗΣΗ σχεδίων, δημιουργών προφίλ ερωτημάτων και μετρητών απόδοσης. Η ανάγνωση αυτών των εργαλείων απαιτεί εξάσκηση. Ένα ερώτημα που εκτελείται σε χιλιοστά του δευτερολέπτου σε ένα μικρό σύνολο δεδομένων μπορεί να διαρκέσει λίγα λεπτά σε ένα μεγάλο. Η διαφορά είναι συχνά το σχέδιο, όχι το υλικό.
Στοιχεία ερωτήματος
- ΕΠΙΛΟΓΗ — στήλες προς επιστροφή
- ΑΠΟ — πίνακες προς ερώτημα
- WHERE — φίλτρα γραμμών
- JOIN — συνδυασμός πινάκων
- ΟΜΑΔΟΠΟΙΗΣΗ ΜΕ — συγκεντρωτικές γραμμές
- ΤΑΞΙΝΟΜΗΣΗ ΚΑΤΑ — ταξινόμηση αποτελεσμάτων
Ένα ερώτημα είναι μια ερώτηση. Η βάση δεδομένων την απαντά. Η ποιότητα της απάντησης εξαρτάται από τον τρόπο με τον οποίο τίθεται η ερώτηση.
Comments
No comments yet. Be the first to share a thought.
Leave a comment