1. SELECT COUNT(*) FROM tablename ist unter allen Umständen die beste Wahl.
2. Versuchen Sie, Abfragen wie SELECT COUNT(*) FROM tablename
zu minimieren3. Verhindern Sie das Auftreten von SELECT COUNT(COL) FROM Tabellenname.
COUNT(*) und COUNT(COL)
Nachdem ich online gesucht habe, habe ich verschiedene Meinungen gefunden:
Zum Beispiel COUNT(COL) ) ist schneller als COUNT(*);
Diejenigen, die denken, dass COUNT(*) schneller ist als COUNT(COL);
Einige Freunde sagten sehr lustig, dass dies tatsächlich vom Charakter abhängt.
Ohne die WHERE-Einschränkung können COUNT(*) und COUNT(COL) grundsätzlich als gleichwertig betrachtet werden
Aber mit der WHERE-Einschränkung ist COUNT (*) viel schneller als COUNT(COL );
Die spezifische Datenreferenz lautet wie folgt:
mysql> >
|. COUNT(fid) |+————+| 79000 |+———— —+ 1 Zeile im Satz (0,03 Sek.)mysql> SELECT COUNT(tid) FROM cdb_posts where fid = 604;+————+| ) |+————+| 79000 |+————+1 Reihe im Satz (0,33 Sek.)mysql> SELECT COUNT(pid) FROM cdb_posts where fid = 604;+————+|. COUNT(pid) |+ ————+|. 79000 |+————+1 Zeile im Satz (0,33 Sek.)COUNT(*) Führt normalerweise einen Indexscan für den Primärschlüssel durch, aber COUNT(COL) ist nicht unbedingt der Fall. Darüber hinaus zählt ersterer die Gesamtzahl der übereinstimmenden Datensätze in der Tabelle, während letzterer alle übereinstimmenden COLs in der Tabelle berechnet Aufzeichnungen. Es gibt Unterschiede. WHERE bei COUNTUm es einfach auszudrücken: Wenn es COUNT gibt und es kein WHERE-Limit gibt, gibt MySQL direkt die Gesamtzahl der gespeicherten Zeilen zurück und wenn dort is WHERE Unter bestimmten Einschränkungen ist immer ein vollständiger Tabellendurchlauf von MySQL erforderlich. Optimierungszusammenfassung: 1. SELECT COUNT(*) FROM Tabellenname ist unter allen Umständen die beste Wahl; 2. Minimieren Sie SELECT COUNT(*) FROM Tabellenname = 'Wert'-Abfrage; 3. Vermeiden Sie SELECT COUNT(COL) FROM Tabellenname.