Quelle http://dev.mysql.com/doc/refman/5.5/en/explain-output.html#explain_filtered
Die filtrierte Spalte gibt einen geschätzten Anteil von Tabellenzeilen , die durch die Tabelle Zustand gefiltert wird. Das heißt, Zeilen zeigen die geschätzte Anzahl der geprüften Zeilen und Zeilen × gefiltert/100 zeigt die Anzahl der Zeilen, die mit vorherigen Tabellen verknüpft werden. Diese Spalte wird angezeigt, wenn Sie EXPLAIN EXTENDED verwenden.
In der gefilterten 100% bedeutet, dass alle Zeilen aus dieser Tabelle gefiltert werden. So einen höheren Wert zu bekommen ist nicht besorgniserregend, da es ein gutes Zeichen ist, bedeutet es muss nicht so viel Daten aus der Tabelle lesen.
So wird es berechnet. Angenommen, ich habe eine Tabelle mit dem Namen users
. Lassen Sie uns eine Analyse durchführen.
mysql> select count(*) from users ;
+----------+
| count(*) |
+----------+
| 79309 |
+----------+
Sie können sehen, dass 79309 Zeilen in der Tabelle sind. Jetzt lässt erklären laufen
mysql> explain extended select * from users order by idusers desc limit 20 ;
+----+-------------+-------+-------+---------------+---------+---------+------+------+-----------+-------+
| id | select_type | table | type | possible_keys | key | key_len | ref | rows | filtered | Extra |
+----+-------------+-------+-------+---------------+---------+---------+------+------+-----------+-------+
| 1 | SIMPLE | users | index | NULL | PRIMARY | 4 | NULL | 20 | 396545.00 | |
+----+-------------+-------+-------+---------------+---------+---------+------+------+-----------+-------+
jetzt fragen, warum filtered = 396545.00
Nun ist die Berechnung einfach ist.
Die Tabelle hat insgesamt Zeilen = 79309 sagen, dass es tx ist.
Die Erklärung zeigt Zeilen = 20 sagen, es ist tx1.
Die gefilterte wird wie folgt berechnet
(tx/tx1)*100 = 396545.00
Also, wenn dieser Wert hoch ist, bedeutet die Abfrage gut ist und nicht alles aus der Tabelle zu lesen.
Um nicht zu verwechseln ist dies nicht die Anzahl der Zeilen, die die Abfrage aussehen wird eine relative Berechnung von% über die Anzahl der Zeilen für die Anzahl der abgerufenen Zeilen.
Wenn es 100 wird bedeutet, dass die Abfrage alle verfügbaren Zeilen in der Tabelle sucht.
Also 20% bedeutet ... 80% bedeutet ... (um Kontrast anzuzeigen) was ist wenn es * ahem * ÜBER 9000 ist! –
@AlecTeal Sie haben nicht bekommen, wie es berechnet wurde. Überprüfen Sie meine aktualisierte Antwort !! –
Also was würde gefiltert = 78 bedeuten? (Außerdem rate ich, dass Zeilen die Nummer ist, die sie tatsächlich betrachtet hat, nicht was die Abfrage zurückgibt. Dann waren 78% von denen, die 78% betrachteten, nützlich - so hohe Werte bedeuten, dass es viel von den Daten nutzte?) –