Heim  >  Artikel  >  Datenbank  >  MySQL-Optimierung, Auswahlanzahl-Effizienz

MySQL-Optimierung, Auswahlanzahl-Effizienz

高洛峰
高洛峰Original
2016-12-02 14:35:081320Durchsuche

1. SELECT COUNT(*) FROM tablename ist unter allen Umständen die beste Wahl.

2. Versuchen Sie, Abfragen wie SELECT COUNT(*) FROM tablename

zu minimieren

3. 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 COUNT

Um 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.

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn