par Guillaume Lelarge

La clause Where


Le chapitre précédent a décrit la structure des index et a expliqué la cause des mauvaises performances avec les index. Dans ce nouveau chapitre, nous apprendrons comment trouver et éviter ces problèmes dans les requêtes SQL. Nous allons commencer en regardant la clause where.

La clause where définit la condition de recherche d'une requête SQL et, de ce fait, elle tombe dans le domaine fonctionnel principal d'un index : trouver des données rapidement. Bien que la clause where ait un impact important sur les performances, elle est souvent mal écrite, si bien que la base de données doit parcourir une grande partie de l'index. Le résultat : une clause where mal écrite est la première raison d'une requête lente.

Ce chapitre explique comment les différents opérateurs affectent l'utilisation d'un index et comment s'assurer qu'un index est utilisable pour autant de requêtes que possible. La dernière section montre des contre-exemples et proposent des alternatives qui donnent de meilleures performances.

Contenu

  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

Section précédenteSection suivante

You can’t learn everything in one day. Subscribe the newsletter via E-Mail, Twitter or RSS to gradually catch up. Have a look at modern-⁠sql.com as well.

À propos de l'auteur

Photo de Markus Winand

Markus Winand est l’ambassadeur de la renaissance SQL. Il a pour mission d’initier les développeurs à l’évolution du SQL au 21ème siècle. Markus peut être engagé comme formateur, conférencier et consultant chez winand.at.

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)

Entrer en contact avec Markus Winand

Markus Winand sur LinkedInMarkus Winand sur XINGMarkus Winand sur Twitter
“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 | Confidentialité et RGPD | CC-BY-NC-ND 3.0 license