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

À 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