Réglage des performances SQL

Dec 19 2022
Le réglage des performances SQL est un processus d'optimisation des requêtes SQL pour s'assurer qu'elles s'exécutent aussi rapidement que possible. De nombreux facteurs affectent les performances des requêtes SQL, tels que le nombre de tables interrogées, la taille et le nombre de colonnes dans les tables et les index sur les tables.

Le réglage des performances SQL est un processus d'optimisation des requêtes SQL pour s'assurer qu'elles s'exécutent aussi rapidement que possible. De nombreux facteurs affectent les performances des requêtes SQL, tels que le nombre de tables interrogées, la taille et le nombre de colonnes dans les tables et les index sur les tables.

SQL est un composant essentiel de nombreux systèmes de bases de données et est un langage bien connu pour interroger, mettre à jour et gérer les données.
Le réglage des performances SQL est un sujet important à maîtriser car il peut contribuer à l'évolutivité et à la vitesse des requêtes.
Dans cette section, nous aborderons différentes manières de régler SQL.

Nous voulons tous toujours une réponse rapide sur le processus de récupération des données. Nous devons donc concevoir une bonne base de données qui offre les meilleures performances lors de la manipulation des données, ce qui se traduit par les meilleures performances d'une application.

Cependant, il n'existe pas de moyen simple de définir les meilleures performances, mais nous pouvons choisir plusieurs façons d'améliorer les performances des requêtes SQL, qui relèvent de différentes catégories telles que la création d'index, l'utilisation de jointures et la réécriture d'une sous-requête pour utiliser JOIN, etc.

En tant que développeur, nous savons que toute requête SQL peut être écrite de plusieurs façons, mais nous devons suivre les meilleures pratiques/techniques pour obtenir de meilleures performances de requête. Certains d'entre eux sont mis en évidence ci-dessous :

  1. Utilisez EXISTS au lieu de IN pour vérifier l'existence des données.
    2. Évitez * dans l'instruction SELECT. Donnez le nom des colonnes dont vous avez besoin.
    3. Choisissez le type de données approprié. Par exemple, pour stocker des chaînes, utilisez varchar à la place du type de données texte. Utilisez le type de données texte chaque fois que vous avez besoin de stocker des données volumineuses (plus de 8 000 caractères).
    4. Évitez nchar et nvarchar si possible car les deux types de données ne prennent que le double de la mémoire en tant que char et varchar.
    5. Évitez NULL dans le champ de longueur fixe. En cas d'exigence de NULL, utilisez un champ de longueur variable (varchar) qui prend moins d'espace pour NULL.
    6. Évitez d'avoir une clause. La clause having est requise si vous souhaitez filtrer davantage le résultat d'une agrégation.
    7. Créez des index clusterisés et non clusterisés.
    8. Gardez l'index clusterisé petit car les champs utilisés dans l'index clusterisé peuvent également être utilisés dans l'index non clusterisé.
    9. La plupart des colonnes sélectives doivent être placées le plus à gauche dans la clé d'un index non clusterisé.
    10. Supprimez les index inutilisés.
    11. Mieux vaut créer des index sur des colonnes qui ont des valeurs entières au lieu de caractères. Les valeurs entières utilisent moins de surcharge que les valeurs de caractères.
    12. Utilisez des jointures au lieu de sous-requêtes.
    13. Utilisez des expressions WHERE pour limiter la taille des tables de résultats créées avec des jointures.
    14. Utilisez TABLOCKX lors de l'insertion dans une table et TABLOCK lors de la fusion.
    15. Utilisez WITH (NOLOCK) lors de l'interrogation des données de n'importe quelle table.
    16. Utilisez SET NOCOUNT ON et utilisez TRY-CATCH pour éviter une condition de blocage.
    17. Évitez les curseurs car les curseurs sont très lents en termes de performances.
    18. Utilisez la variable Table à la place de la table Temp. L'utilisation de tables temporaires nécessitait une interaction avec la base de données TempDb, ce qui prend du temps.
    19. Utilisez UNION ALL à la place de UNION si possible.
    20. Utilisez le nom du schéma avant le nom des objets SQL.
    21. Utilisez la procédure stockée pour les données fréquemment utilisées et les requêtes plus complexes.
    22. Gardez la transaction aussi petite que possible car la transaction verrouille les données des tables de traitement et peut entraîner des blocages.
    23. Évitez le préfixe "sp_" avec le nom de la procédure stockée définie par l'utilisateur, car le serveur SQL recherche d'abord la procédure définie par l'utilisateur dans la base de données principale, puis dans la base de données de la session en cours.
    24. Évitez d'utiliser la sous-requête scalaire non corrélée. Utilisez cette requête comme une requête distincte au lieu d'une partie de la requête principale et stockez la sortie dans une variable, qui peut être référencée dans la requête principale ou une partie ultérieure du lot.
    25. Évitez les fonctions multi-instructions à valeur de table (TVF). Les TVF multi-instructions sont plus coûteuses que les TVF en ligne.

    Comme nous l'avons vu ci-dessus, dans SQL Server, vous pouvez prendre plusieurs mesures pour améliorer les performances de vos requêtes et de la base de données dans son ensemble. De nombreuses étapes s'appliqueront également à d'autres SGBDR, comme ORACLE.
  1. Utilisez EXPLAIN PLAN ou AUTOTRACE pour analyser le plan d'exécution de vos requêtes et identifier les problèmes liés à leur exécution.
  2. Utilisez l'indicateur INDEX pour spécifier quel index doit être utilisé par l'optimiseur pour une requête particulière.
  3. Envisagez d'utiliser des conseils tels que FULL ou INDEX_FFS pour forcer l'optimiseur à utiliser une analyse complète de la table ou une analyse complète rapide de l'index, respectivement.
  4. Utilisez l'indicateur OPTIMIZER_MODE pour spécifier un mode d'optimisation particulier pour une requête.
  5. Envisagez d'utiliser des vues matérialisées pour précalculer et stocker les données fréquemment consultées, ce qui peut améliorer les performances des requêtes qui accèdent à ces données.
  6. Utilisez le package DBMS_STATS pour analyser et collecter des statistiques sur votre base de données et ses objets, ce qui peut aider l'optimiseur à prendre des décisions plus éclairées lors de la création de plans d'exécution.
  7. Envisagez d'utiliser le partitionnement pour diviser les tables volumineuses en éléments plus petits et plus faciles à gérer, ce qui peut améliorer les performances des requêtes qui accèdent à ces tables.
  8. Utilisez SQL Tuning Advisor pour identifier et résoudre les problèmes de performances potentiels avec vos instructions SQL.
  9. Ce ne sont là que quelques-unes des nombreuses techniques que vous pouvez utiliser pour améliorer les performances de vos requêtes et de votre base de données Oracle SQL. Il est important de garder à l'esprit que les étapes spécifiques que vous devrez suivre dépendront de votre base de données et de votre charge de travail spécifiques.
  10. C'est toujours une bonne idée de consulter un administrateur de base de données ou d'autres experts si vous rencontrez des problèmes de performances.

Plusieurs façons d'apprendre GCP gratuitement avec Google Cloud pendant les fêtes

Compréhension _

Commandes Linux pour l'apprentissage dans le cloud

Bonne lecture…..Bon apprentissage !