IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Téléchargé 10 fois
Vote des utilisateurs
0 
0 
Détails
Éditeur : Jay Pipes
Licence : Non renseignée
Mise en ligne le 9 février 2011
Langue : Français
Référencé dans
Navigation

Obtenir la liste des 10 index les moins performants

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).
Avatar de 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.