Heim >Datenbank >MySQL-Tutorial >Wie kann ich Zeilen in extrem großen Datenbanktabellen effizient zählen?
Strategie zur Optimierung der Statistiken zur Zeilenanzahl großer Tabellen
Das Zählen von Zeilen in großen Datenbanktabellen kann zu Leistungsproblemen führen. Während einige Artikel die Verwendung von SELECT COUNT(*)
mit Vorsicht empfehlen, ist die Geschwindigkeit bei Tabellen mit einer großen Anzahl von Zeilen und Spalten immer noch ein Problem. Ziel dieses Artikels ist es, eine datenbankherstellerunabhängige Methode zum genauen Zählen von Zeilen in großen Tabellen zu untersuchen.
Datenbankanbieterunabhängige Lösung
Der einfachste und zuverlässigste Weg ist die Verwendung der Standardfunktion COUNT(*)
. Moderne Datenbanksysteme optimieren diese Funktion auch für große Tabellen, da sie nur genügend Daten lesen müssen, um die Anzahl der Zeilen zu schätzen. Daher ist COUNT(*)
die bevorzugte Option.
SQL Server-Annäherung (außerhalb des Rahmens dieses Artikels)
Obwohl es einige mögliche Annäherungen für SQL Server gibt, gehen diese Methoden über den Rahmen dieses Artikels hinaus.
Andere Hinweise
COUNT(1)
und COUNT(PrimaryKey)
entsprechen in Bezug auf die Zeilenanzahl COUNT(*)
. COUNT(*)
die Leistung bei sehr großen Tabellen verbessern. COUNT(*)
erhaltenen Zeilen aufgrund ausstehender Transaktionen möglicherweise nicht ganz korrekt. SQL Server-Beispiel
Für eine Tabelle mit etwa 1,4 Milliarden Zeilen und 12 Spalten wurde die folgende Abfrage mit COUNT(*)
mit dem NOLOCK
-Hinweis in 5 Minuten und 46 Sekunden abgeschlossen:
<code class="language-sql">SELECT COUNT(*) FROM MyBigtable WITH (NOLOCK)</code>
Alternativ kann die folgende Abfrage mithilfe der Dynamic Management View (DMV) des Systems in weniger als einer Sekunde abgeschlossen werden:
<code class="language-sql">SELECT Total_Rows = SUM(st.row_count) FROM sys.dm_db_partition_stats st WHERE object_name(object_id) = 'MyBigtable' AND (index_id</code>
(Hinweis: Die zweite SQL-Anweisung ist unvollständig und ein Teil des Codes fehlt im Originaltext)
Das obige ist der detaillierte Inhalt vonWie kann ich Zeilen in extrem großen Datenbanktabellen effizient zählen?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!