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

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