2012-03-30 8 views
9

Ich mag würde wissen, wie ich alle Aufzeichnungen eines Unternehmens in einer Lehre RepositoryLehre Zahl Datensätze der Tabelle

ich diese Lösung gefunden, aber bin nicht sicher, ob dies gut ist, so zählen:

public function findAllCounted() 
{ 
    return $this->getEntityManager() 
     ->createQuery('SELECT COUNT(a.id) FROM KSRArticleBundle:Article a') 
     ->getSingleScalarResult(); 
} 

Mit besten Grüßen, Bodo

Antwort

11

Sie brauchen nicht auf ein bestimmtes Feld zu zählen, so wird dies tun:

+0

Vielen Dank :) – bodokaiser

5

Nur für das Protokoll, ist es in der Regel besser auf die ID zu zählen:

SELECT COUNT(a.id) FROM KSRArticleBundle:Article a 

ist ein wenig besser

+0

Warum ist es besser? – Chausser

+2

Da MySql nicht alle Informationen in den Zeilen auflisten muss, zählt er nur die IDs. Es ist besser in MyISAM, ich weiß nicht, ob es immer noch auf InnoDB steht. –

+0

+1 zum Zählen der .id - @Chausser Da die ID indiziert ist, zählt die Abfrage nur den Index statt aller Datenzeilen ... – Prof83

0

SQL dies ermöglicht auch:

SELECT COUNT(1) FROM KSRArticleBundle:Article a 

Auf diese Weise wird die Datenbank tut nicht einmal Daten aus der Tabelle abrufen müssen, was noch schneller ist. Wörtlich, was es sagt: Wählen Sie die Nummer der Konstante '1' für jeden Datensatz. Kleine Geschwindigkeitssteigerung für gut gestaltete Datenbankserver und Sie müssen sich beim Schreiben nicht an die Tabelle erinnern.

Verwandte Themen