par Guillaume Lelarge.

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

  4. 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

  5. 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

  6. 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

  7. 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

  8. 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

  9. 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

  1. Plans d'exécution — Récupérer et lire les plans d'exécution

    DB2MySQLOraclePostgreSQLSQL Server

  2. Liste des mythes — Légendes habituelles

    1. Les index peuvent dégénérer

    2. Les plus sélectifs en premier

    3. Oracle ne peut pas indexer NULL

    4. Le SQL dynamique est lent

  3. Schéma des exemples — Scripts CREATE et INSERT

    DB2MySQLOraclePostgreSQLSQL Server

À propos de l'auteur

Photo de Markus Winand

Markus Winand teaches efficient SQL—inhouse and online. He minimizes the development time using modern SQL and optimizes the runtime with smart indexing—for that he also published the book SQL Performance Explained.

“Use The Index, Luke!” by Markus Winand and translated by Guillaume Lelarge is licensed under a Creative Commons Attribution-Noncommercial-No Derivative Works 3.0 Unported License.
Mentions légales | Contact | NO WARRANTY | Marque déposée | Privacy | CC-BY-NC-ND 3.0 license