par Guillaume Lelarge.

Fonctions


L'index sur NOM a amélioré considérablement les performances mais son utilisation n'est possible que si vous recherchez en utilisant la même casse (majuscule/minuscule) que celle stockée dans la base de données. Cette section explique comment enlever cette restriction sans perdre en performance.

DB2

Les index basés sur des fonctions sont disponibles pour DB2 sur zOS mais pas sur d'autres systèmes.

La solution de repli est de créer une colonne réelle dans la table qui détient le résultat d'une fonction ou d'une expression. La colonne doit être maintenue par un trigger ou par la couche applicative, suivant ce qui est le plus approprié. La nouvelle colonne peut être indexée. La clause where doit utiliser la nouvelle colonne (sans l'expression).

MySQL

MySQL est insensible à la casse par défaut mais il est possible de configurer ce comportement au niveau de chaque colonne. À partir de la version 5.7, MySQL peut créer des index sur des colonnes générées.

La solution de repli est de créer une colonne réelle dans la table. Cette colonne détient le résultat de la fonction ou de l'expression. La colonne doit être maintenue par un trigger ou par la couche applicative, suivant ce qui est le plus approprié. La nouvelle colonne peut être indexée. La clause where doit utiliser la nouvelle colonne (sans l'expression).

Oracle

La base de données Oracle supporte les index basés sur des fonctions depuis la version 8i. Les colonnes virtuelles ont été ajoutées en version 11g.

PostgreSQL

PostgreSQL supporte complètement les index sur expression depuis la version 7.4 (et partiellement depuis la 7.2).

SQL Server

SQL Server supporte les colonnes calculées qui peuvent être indexées depuis la version 2000.

Contenu

  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

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