3 Stimmen

Wie lassen sich die Zeilen in einer Tabelle am effizientesten zählen?

Ist es effizienter zu verwenden:

$sql = 'SELECT COUNT(*) AS count FROM users';
$odbcResult = OdbcExec($sql);
@odbc_fetch_row($odbcResult);
$count = @odbc_result($odbcResult, 'count');

oder zu verwenden:

$sql = 'SELECT * FROM users';
$odbcResult = OdbcExec($sql);    
$count = odbc_num_rows($odbcResult);

9voto

Brian Roach Punkte 74523

Die erste. Der Server macht die Arbeit. Er kann die Antwort bereits kennen, ohne zu zählen,

Bei letzterem müssen alle Zeilen über das Netzwerk (und in den Speicher) an Ihr Programm zurückgegeben werden.

2voto

rayman86 Punkte 1385
$sql = 'SELECT COUNT(id) AS count FROM users';
$odbcResult = OdbcExec($sql);
@odbc_fetch_row($odbcResult);
$count = @odbc_result($odbcResult, 'count');

oder ein anderes Indexfeld außer id. Es ist ein wenig schneller als COUNT(*), aber die Zählmethode ist der richtige Weg. Wenn Sie etwas mit den Ergebnissen tun müssen, ist Methode 2 schneller, aber wenn Sie nur die Zählung benötigen, ist dies die Methode, die Sie wollen.

-edit- Schlüsselwort für Index vor Feld hinzugefügt. Wahrer Kommentar unten, ging davon aus, dass es eine id-Indexspalte gibt (sollte auf jeden Fall irgendwo einen Index haben)

2voto

Gareve Punkte 3286

Füllen Sie eine Tabelle mit 10^x Elementen mit x>=6 und sehen Sie, wie lange das dauert.

2voto

Die erste Methode ist definitiv schneller. Aber dass COUNT(id) schneller ist als COUNT(*), ist fraglich. Normalerweise sind sie genau das gleiche, und es gibt Fälle, in denen COUNT(id) tatsächlich langsamer ist (siehe: http://www.mysqlperformanceblog.com/2007/04/10/count-vs-countcol/ )

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X