par Guillaume Lelarge

Sur-indexation


Si le concept d'index fonctionnel est nouveau pour vous, vous pourriez être tenté d'indexer tout mais c'est en fait la dernière chose à faire. Chaque index nécessite une maintenance continue. Les index fonctionnels sont particulièrement problématiques car ils facilitent la création d'index redondants.

La recherche insensible à la casse ci-dessus peut aussi être implémentée avec la fonction LOWER :

SELECT nom, prenom, numero_telephone
  FROM employes
 WHERE LOWER(nom) = LOWER('winand');

Un seul index ne peut pas supporter les deux méthodes permettant d'ignorer la casse. Bien sûr, nous pourrions créer un deuxième index sur LOWER(nom) pour accélérer cette requête, mais cela signifierait que la base de données doive maintenir deux index à chaque requête insert, update et delete (voir aussi le Chapitre 8, « Modifier les données »). Pour qu'un seul index suffise, vous devez utiliser la même fonction dans toute votre application.

Astuce

Unifiez le chemin d'accès pour qu'un index puisse être utilisé par plusieurs requêtes.

Attention

Quelques fois, les ORM utilisent UPPER et LOWER sans que le déve­loppeur en soit conscient. Par exemple, Hibernate injecte un LOWER implicite pour faire des recherches insensibles à la casse.

Astuce

Avoir toujours comme but d'indexer la donnée originale car elle est souvent l'information la plus utile à placer dans un index.

Section précédenteSection suivante

You can’t learn everything in one day. Subscribe the newsletter via E-Mail, Bluesky 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

Listes de diffusion de Markus WinandFlux RSSMarkus Winand sur LinkedInMarkus Winand sur XINGMarkus Winand sur TwitterMarkus Winand sur Bluesky
Copyright 2013-2025 Guillaume Lelarge, Markus Winand. All righs reserved.
Mentions légales | Contact | NO WARRANTY | Marque déposée | Confidentialité et RGPD