Obtenir la liste des 10 index les moins performants

Présentation
Comment peut-on évaluer l'efficacité d'un index ?

Un index est efficace si il est placé sur une colonne possédant peu de doublons (NULLs compris). En effet le SGBD indexe les valeurs, ce qui implique que la présence de doublons réduit le nombre d'index.
Autrement dit, un index est performant si la différence entre le nombre de tuples total et le nombre de valeurs distinctes tend vers 0.
Nous chercherons donc à calculer le ratio du nombre de valeurs distinctes sur le nombre total de tuples, plus ce ratio est proche de 1, et plus l'index est performant.

Cette requête ne fonctionne qu'avec une version de MySQL possédant un catalogue (version 5.0.2 ou postérieure).
Détails
Catégories : Administration
Éditeur : Jay Pipes   +
Licence : Autre
Date de mise en ligne : 9 février 2011




Avatar de CinePhil CinePhil - Modérateur https://www.developpez.com
le 09/02/2011 à 13:51
Petit détail :
Code : Sélectionner tout
1
2
3
4
# 
WHERE 
  /* exclut la base syst?me 'mysql' */ 
  t.TABLE_SCHEMA != 'mysql'
Le symbole de l'inégalité en SQL n'est pas != mais <>.

Autre détail :
Code : Sélectionner tout
1
2
3
4
5
6
7
ROUND(((s.CARDINALITY / IFNULL(t.TABLE_ROWS, 0.01)) * 100), 2) AS `sel %` 
 
 
# 
/* exclut les index qui n'ont pas de probl?mes de performance (ratio = 1) */ 
# 
AND (s.CARDINALITY / IFNULL(t.TABLE_ROWS, 0.01)) < 1.00
Il vaut mieux utiliser le normatif COALESCE plutôt que le spécifique IFNULL.

Je n'ai pas testé la requête mais je suppose que tu l'as fait avant d'écrire l'article ?

Il peut aussi y a voir des index avec de très bon ratios mais qui ne seront (quasi) jamais utilisés car jouant sur un trop petit nombre de données.
Developpez.com décline toute responsabilité quant à l'utilisation des différents éléments téléchargés.
Contacter le responsable de la rubrique MySQL