par Guillaume Lelarge.

SQL Indexation et optimisation e-Book


Un tutoriel libre couvrant l'indexage SQL et l'optimisation SQL pour les développeurs : les détails inutiles sur le fonctionnement interne des bases de données sont limitées au strict minimum.

L'indexage SQL est la méthode d'optimisation la plus efficace en SQL et nécessite la même attention que la conception du schéma. Cependant, cette étape est souvent négligée lors du développement. Use The Index, Luke explique l'indexage SQL de la perspective du code source, en couvrant les outils ORM comme Hibernate et Doctrine.

L'indexage SQL dans MySQL, Oracle, SQL Server, etc.

L'indexage SQL est présenté comme un thème indépendant de la base de données. Pour faciliter la lecture, la partie principale du livre utilise seulement les termes provenant d'Oracle. Des notes spécifiques à certaines bases de données sont fournies comme indiqué ci-dessous.

DB2

Use The Index, Luke couvre l'indexage SQL pour DB2 d'IBM. Les tests ont été réalisés avec DB2 pour Linux, UNIX et Windows, V10.5-11.1.

MySQL

Use The Index, Luke couvre l'indexage SQL pour MySQL. Les tests ont été réalisés avec MySQL 5.7.

Oracle

Use The Index, Luke couvre l'indexage SQL pour la base de données Oracle. Les tests ont été réalisés avec Oracle 11g/12c.

PostgreSQL

Use The Index, Luke couvre l'indexage SQL pour PostgreSQL. Les tests ont été réalisés avec PostgreSQL 9.2-9.6.

SQL Server

Use The Index, Luke couvre l'indexage SQL pour Microsoft SQL Server. Les tests ont été réalisés avec SQL Server 2012 - 2017.

Table des matières

  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

À 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. His book entitled SQL Performance Explained has become standard reading.

Livre de Markus

Couverture du livre « SQL : Au cœur des performances »

L'essence de SQL tuning dans 200 pages.

Acheter de Markus
(Livre de poche et PDF)

Achetez chez Amazon
(Seulement en poche)

“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