MySQL erhält die Anzahl der Zeilen in einer innodb-Tabelle

9

Ich habe einen Tisch mit innodb. Ich weiß, dass der Tisch ungefähr 89 Millionen Zeilen hat. Verwenden Sie

%Vor%

dauert ungefähr fünf Minuten. Ich weiß, dass innodb nicht für bedingungslose COUNT (*) Abfragen optimiert ist. Wie kann ich die Abfrage so umstrukturieren, dass sie schneller zählt? Würde nur WHERE 1 = 1 funktionieren, oder muss ich ein bestimmtes Feld abfragen?

Ich weiß, dass ich die ungefähre Anzahl von Zeilen mit SHOW TABLE STATUS ermitteln kann, aber ich möchte den Wert in einem PHP-Skript erhalten, und es scheint, als ob mit dieser Methode viel zu durchforsten ist.

    
Wige 25.02.2011, 16:50
quelle

4 Antworten

18

Wenn Sie mit der geschätzten Anzahl einverstanden sind und sich nicht mit dem Ausführen von SHOW TABLE STATUS aus PHP herumärgern möchten, können Sie den DB "information_schema" verwenden:

%Vor%     
Galz 26.02.2011, 17:35
quelle
6

Wenn Sie mit der ungefähren Anzahl der Datensätze zufrieden sind, können Sie die Ausgabe von " explain " verwenden.

Vereinfachte Version des Codes ist

%Vor%     
Zimbabao 26.02.2011 10:24
quelle
3

Wenn die Tabelle häufig gelesen und selten aktualisiert wird, sollten Sie möglicherweise eine Statistiktabelle erstellen, die über löst aus, wenn Änderungen an der Tabelle vorgenommen werden.

    
Jordan Ryan Moore 25.02.2011 16:58
quelle
-5

mysql_num_rows kann für Sie nützlich sein.

    
steve 25.02.2011 16:53
quelle

Tags und Links