Zu sagen, dass SELECT COUNT(*) vs COUNT(1)
Ergebnisse in Ihrem DBMS Rückkehr " Säulen "ist reine Koje. Das kann lange der Fall gewesen sein, vor langer Zeit, aber jeder sich selbst achtet Abfrageoptimierer eine schnelle Methode wählen, um die Zeilen in der Tabelle zu zählen - es NO Performance-Unterschied zwischen SELECT COUNT(*), COUNT(1), COUNT('this is a silly conversation')
Außerdem ist, wird SELECT(1) vs SELECT(*)
NICHT einen Unterschied in der INDEX-Nutzung haben - die meisten DBMS werden sowieso SELECT(n) into SELECT(*)
optimieren. Siehe die TOM ASK: Oracle wurde SELECT(n) into SELECT(*)
für den besseren Teil von einem Jahrzehnt zu optimieren, wenn sie nicht mehr: http://asktom.oracle.com/pls/asktom/f?p=100:11:0::::P11_QUESTION_ID:1156151916789
Problem ist in count (col) zu zählen () Umwandlung ** 03/23/00 05:46 pm *** Eine Problemumgehung besteht darin, das Ereignis 10122 auf zu setzen. Count (col) ausschalten -> count () Optimierung.Eine andere Arbeit herum ist , um die Zählung zu ändern, um zu zählen (), es bedeutet das selbe, wenn die Spalte eine NOT NULL Beschränkung hat. Die Fehlernummer ist 1215372.
Eine Sache zu beachten - wenn Sie COUNT verwenden (col) (! Nicht) und col markierte NULL, dann wird es tatsächlich die Anzahl der Vorkommen zählen in die Tabelle (entweder über Index-Scan, Histogramm usw., falls sie vorhanden sind, oder andernfalls eine vollständige Tabellensuche).
Fazit: wenn das, was Sie wollen, ist die Anzahl der Zeilen in einer Tabelle, die Verwendung COUNT (*)
Es ist nicht richtig zu sagen, dass es keinen Unterschied zwischen Auswahl (n) und Auswahl (*) gibt. Wenn Sie einen Deckungsindex haben, der n enthält, erhalten Sie die Daten direkt von der Blattebene des Index und müssen nicht zurück zur Tabelle, die viel schneller ist. –
Der DBMS-Optimierer * erkennt dies * und wählt den richtigen Index für den Job. Vorausgesetzt, es gibt einen Index, selten ist der Tag, an dem ich ein DBMS tatsächlich gesehen habe ** zählen ** Zeilen auf dem Tisch. Außerdem führt das Vorhandensein von NULLs oft zu semantischen Fehlern. Wenn Sie die Anzahl der Zeilen in einer Tabelle haben möchten, verwenden Sie COUNT (*) !!! –