2010-11-10 18 views
6

Ma Recherche:MySQL expliquer la colonne filtrée saut 4.100 avec l'index

EXPLAIN EXTENDED SELECT `artwork`.`id` , `artwork`.`added` 
FROM `artwork` 
ORDER BY `artwork`.`added` DESC 
LIMIT 0 , 6 

Quand j'ai ajouté un index sur « ajouté » pour éviter d'utiliser filesort et utiliser index plutôt la sortie expliqué est passé de

id select_type table type possible_keys key key_len ref rows filtered Extra 
1 SIMPLE artwork ALL NULL NULL NULL NULL 302 100.00 Using filesort 

à

id select_type table type possible_keys key key_len ref rows filtered Extra 
1 SIMPLE artwork index NULL added 4 NULL 6 5033.33 

et je suis préoccupé par la montée d'un filtre Environ 4 100 - Je ne peux pas trouver sur Google ce que filtered signifie

Répondre

6

Hey, c'est en fait de bonnes nouvelles. Il indique le nombre de lignes que vos limitations suppriment du jeu de résultats. Dans ce cas, ce serait votre déclaration LIMIT. See the manual:

La colonne filtered indique un pourcentage estimé de lignes de la table qui seront filtrés par le tableau condition. C'est-à-dire, rows montre le nombre estimé de lignes examinées et rowsfiltered/100 montre le nombre des lignes qui seront jointes avec les tableaux précédents. Cette colonne est si vous utilisez EXPLAIN EXTENDED.

+0

Ok, donc vous dites que c'est bon, mais je ne comprends toujours pas ce que cela signifie ... – Webnet

+1

@Webnet Cela signifie que, sans votre clause 'LIMIT', les lignes' filtrées'% __additional__ seront retournées au lieu. Essayez de supprimer votre clause 'LIMIT' et vous verrez le nombre filtré tomber à 0 et les' rows' deviennent le nombre total de lignes dans la table. –

3

De l'docs:

filtered

La colonne filtered indique un pourcentage estimé de lignes de la table qui sera filtrée par la condition de la table. Cela signifie que rows indique le nombre estimé de lignes examinées et rows × filtered/100 indique le nombre de lignes qui seront jointes aux tables précédentes. Cette colonne est affichée si vous utilisez EXPLAIN EXTENDED. (Nouveau en MySQL 5.1.12)

Fondamentalement, c'est le ratio des enregistrements retournés aux enregistrements récupérés.

Son but est de montrer à quel point vos conditions WHERE/ON sont sélectives et quel serait l'avantage de créer un index sur elles.

Notez que ce champ a peu de sens pour les requêtes avec LIMIT, car il est toujours calculé sans tenir compte de la clause LIMIT, qui rows est calculé par rapport à celle-ci.