Table des matières
Certaines requêtes consomment plus de ressources que d'autres. Par exemple, les requêtes qui renvoient des ensembles de résultats volumineux et celles qui contiennent des clauses WHERE qui ne sont pas uniques sont toujours gourmandes en ressources. Aucun degré d'intelligence des bases de données SQL ne permet d'optimiser les requêtes ni d'éliminer le coût en ressources de ces constructions par rapport à une requête moins complexe.Nous pouvons obtenir les mêmes résultats en écrivant différentes requêtes SQL. Mais l'utilisation de la meilleure requête est importante lorsque l'on considère les performances. Le réglage SQL est le processus qui garantit que les instructions SQL générées par une application seront exécutées dans les plus brefs délais. Ces requêtes SQL peuvent être optimisées pour de meilleures performances.
Techniques d'optimisation ou Tuning SQL
Ensuite, nous verrons quelques techniques d'optimisation
CAS 1: La requête SQL devient plus rapide si vous utilisez les noms des champs que le * comme requête de tous les champs de la table
SÉLECTIONNER * DE clients
Il est plus optimal d'écrire la requête de cette manière
SELECT id, nom, adresse FROM clients
CAS 2 : La clause HAVING est utilisée pour filtrer les lignes après que toutes les lignes ont été sélectionnées.
SELECTIONNER sujet, compter (étudiants) nombre_étudiants FROM inscrits O sujet = 'Chimie' AND sujet = 'Histoire' GROUP BY sujet;
Il est plus optimal d'écrire la requête de cette manière
SELECTmateria, count (students) number_alumnos FROM INSCRIPTION GROUP BY subject HAVING subject = 'Chimie' AND subject = 'History'
CAS 3 : Parfois, nous pouvons avoir plusieurs sous-requêtes dans la requête principale. Voyons dans l'exemple suivant comment minimiser le bloc de sous-requête dans votre requête.
Nous consultons l'employé le plus âgé et le mieux payé.
SELECT nom FROM employés WHERE salaire = (SELECT MAX (salaire) FROM employés) AND age = (SELECT MAX (âge) FROM employés) AND catégorie = 'Électronique';
Il est plus optimal d'écrire la requête de la manière suivante
SELECT nom FROM employés WHERE (salaire, âge) = (SELECT MAX (salaire), MAX (âge) FROM employés) AND item = 'Électronique';
CAS 4: L'utilisation appropriée de l'opérateur EXISTS, IN et des jointures de table dans votre requête est importante car ce sont des transactions qui ralentissent l'accès aux données.
Performances généralement les plus lentes dans la requête canda.
IN est efficace lorsque la plupart des critères de filtre se trouvent dans la sous-requête.
Exist est efficace lorsque la plupart des critères de filtre se trouvent dans la requête principale.
Voyons quelques exemples
Sélectionnez * à partir du produit p où product_id IN (sélectionnez product_id à partir des commandes)
Il est plus optimal de l'écrire comme suit
Sélectionnez * à partir du produit où EXISTE (sélectionnez * à partir des commandes où commandes.product_id = product.product_id)
Utilisation exister au lieu de DISTINCT
Exemple voir quelles catégories ont des livres disponibles
SÉLECTIONNER DISTINCT categories.id, categories.categories FROM categories, books WHERE categories.id = books.idcategory;
Il est plus optimal d'écrire la requête comme suit
SELECT DISTINCT categories.id, categories.categories FROM categories O EXISTE (SELECT 'X' FROM livres WHERE books.idcategory = categories.id);
Voici quelques conseils qui permettront d'économiser des ressources lors de l'exécution de requêtes SQL et ainsi d'avoir également une application avec des réponses plus rapides.Avez-vous aimé et aidé ce tutoriel ?Vous pouvez récompenser l'auteur en appuyant sur ce bouton pour lui donner un point positif