Actualités
Arjen Lentz propose la requête suivante pour détecter les index qui ne servent à rien dans MySQL :
SELECT s.table_name,
concat(s.index_name,'(',group_concat(s.column_name order by s.seq_in_index),')') as idx,
GROUP_CONCAT(s.cardinality ORDER BY s.seq_in_index) AS card,
t.table_rows
FROM information_schema.tables t
JOIN information_schema.statistics s USING (table_schema,table_name)
WHERE t.table_schema='dbname'
AND t.table_rows > 1000
AND s.non_unique
GROUP BY s.table_name,s.index_name
HAVING (card + 0) < (t.table_rows / 3);
La requête utilise la base information_schema (MySQL 5.0 et supérieur), pour repérer les index dont la cardinalité est inférieure à 30% : c'est le niveau à partir duquel MySQL va décider que l'index est utile, et en dessous de ce niveau, MySQL décidera d'ignorer l'index et de tout analyser. Cela revient à décider de tout ranger quand le désordre est tellement grand que corriger les erreurs sera beaucoup plus long encore.
| ||||
| ||||
| ||||
<< Début 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | Fin >> | ||||
| Résultats 64 - 72 sur 7817 |






