Tout ce que les développeurs devraient savoir sur les performances en SQL


  1. Préface — Pourquoi les développeurs doivent utiliser des index

  2. Anatomie d’un index — À quoi ressemble un index ?

    1. Les nœuds feuilles — Une liste doublement liée

    2. Le B-Tree — C’est un arbre balancé

    3. Index lents, partie I — Deux ingrédients rendent les index lents

  3. La clause Where — Indexer pour améliorer les performances en recherche

    1. L’opérateur d’égalité — Recherche de la clé exacte

      1. Clés primaires — Vérifier l’utilisation des index

      2. Clés concaténées — Index multi-colonnes

      3. Index lents, Partie II — Le premier ingrédient, revisité

    2. Fonctions — Utiliser des fonctions dans la clause where

      1. Recherche insensible à la casseUPPER et LOWER

      2. Fonctions définies par l’utilisateur — Limitations des index utilisant une fonction

      3. Sur-indexation — Éviter la redondance

    3. Variables liées — Pour la sécurité et les performances

    4. Rechercher un intervalle — Beyond equality

      1. Plus grand, plus petit et BETWEEN — L’ordre des colonne importe encore plus

      2. Indexer des filtres LIKELIKE n’est pas pour la recherche plein texte

      3. Combinaison d’index — Pourquoi ne pas utiliser un index pour chaque colonne ?

    5. Index partiels — Indexer les lignes sélectionnées

    6. NULL dans la base de données Oracle — Une curiosité importante

      1. NULL dans les index — Chaque index est un index partiel

      2. Contraintes NOT NULL — affecte l’utilisation des index

      3. Émuler des index partiels — utiliser une indexation basée sur les fonctions

    7. Conditions cachées — mauvaises utilisations standards

      1. Dates — Faites particulièrement attention aux types DATE

      2. Chaînes numériques — Ne mélangez pas les types

      3. Combiner des colonnes — utiliser des clauses where redondantes

      4. Logique intelligente — Une façon intelligente de rendre le SQL lent

      5. Mathématique — les bases de données ne résolvent pas les équations

  1. Tests et scalabilité — À propos du matériel

    1. Volume de données — Le retour de la mauvaise indexation

    2. Charge système — La charge de la production affecte les temps de réponse

    3. Temps de réponse et bande passante — Scalabilité horizontale

  2. L’opération de jointure — Rapide, si fait correctement

    1. Boucles imbriquées — À propos du problème des sélections N+1 dans les ORM

    2. Jointure de hachage — Requiert une approche complètement différente de l’indexation

    3. Jointure par tri ‌— Comme une fermeture éclaire sur deux ensembles triés

  3. Regrouper les données — Pour réduire les entrées/sorties disques

    1. Les prédicats des filtres pour index utilisés intentionellement — pour améliorer LIKE

    2. Parcours d’index couvrants — Éviter l’accès aux tables

    3. Table organisée comme un index — Index regroupé sans les tables

  4. Trier et grouperorder by sérialisé : une troisième puissance

    1. « Order By » indexé — interactions de la clause where

    2. ASC/DESC et NULL FIRST/LAST — changer l’ordre de l’index

    3. « Group By » indexé — Envoyer les données dans group by

  5. Résultats partiels — Paginer efficacement

    1. Sélectionner les N premières lignes — si vous avez seulement besoin des quelques premières lignes

    2. Récupérer la page suivante — Comparaison des méthodes de décalage et de recherche

    3. Fonctions de fenêtrage — Pagination utilisant des requêtes analytiques

  6. Insertion, suppression et mise à jour — Impacts de l’indexation sur les requêtes DML

    1. Insert — ne peut pas bénéficier des index

    2. Delete — utilise les index pour la clause where

    3. Update — n’affecte pas tous les index de la table

Le livre d'optimisation SQL destine aux développeurs !