Heim > Datenbank > MySQL-Tutorial > Hauptteil

Zusammenfassung der MySQL-Optimierung – Gesamtzahl der Abfragen

小云云
Freigeben: 2017-12-08 11:38:00
Original
2900 Leute haben es durchsucht

In diesem Artikel wird hauptsächlich die Zusammenfassung der MySQL-Optimierung vorgestellt. Der Artikel führt einen einfachen Test und Vergleich durch, der einen gewissen Referenzwert hat.

1, COUNT(*) und COUNT(COL)

COUNT(*) führt normalerweise einen Indexscan für den Primärschlüssel durch, während COUNT(COL ) Darüber hinaus ist Ersteres die Gesamtzahl aller übereinstimmenden Datensätze in der Statistiktabelle, während Letzteres die Anzahl aller übereinstimmenden COL-Datensätze in der Berechnungstabelle ist. Es gibt Unterschiede.
Optimierungszusammenfassung für MyISAM-Tabellen:

1. SELECT COUNT(*) FROM Tabellenname ist unter allen Umständen die beste Wahl; Reduzieren Sie Abfragen wie SELECT COUNT(*) FROM tablename WHERE COL = 'value';

3. Beseitigen Sie das Auftreten von SELECT COUNT(COL) FROM tablename WHERE COL2 ='value'.


2. COUNT(*) oder COUNT(id)

Nach meinem Verständnis sollte es schneller sein, COUNT(id) zu verwenden Denn wenn meine ID ein automatisch inkrementierender Primärschlüssel ist, verbraucht die Berechnung seiner Nummer offensichtlich weniger Ressourcen als die Berechnung der Anzahl aller Felder. Ich habe jedoch mehr als einen Artikel gesehen, der der Anleitung zur MySQL-Abfragebeschleunigung ähnelt. Sie alle empfehlen, dass wir SELECT COUNT(*) anstelle des direkten COUNT-Primärschlüssels verwenden.

Es scheint, dass die Gesamtzahl der Einträge mithilfe der MyISAM-Engine in der Tabelle gespeichert wird. Wenn es kein WHERE gibt oder WHERE immer wahr ist (z. B. WHERE 1), dann kann COUNT(*). Gibt direkt die Gesamtzahl der Einträge zurück.

Außerdem ist es offensichtlich, dass COUNT(*) nicht „alle Felder zählt“. Offensichtlich analysiert MySQL * in „ein Datenstück“.

Testdaten, einfacher Vergleich, keine weiteren eingehenden Tests:


Im Allgemeinen ist die Verwendung von COUNT(id) immer noch möglich schneller. Hier ist ein einfacher Vergleich als Referenz.

#0.817-一百万条的查询时间
select count(*) from student ;
#0.789-一百万条的查询时间
select count(id) from student;
#1.011-一百万条的查询时间
select count(name) from student;
#1.162-一百万条的查询时间
SELECT COUNT(*) FROM student WHERE namelike '%xiaoli%';#默认用主键索引查询,但是加上like条件后索引失效
Nach dem Login kopieren
Verwandte Empfehlungen:

Beispiel für die gemeinsame Nutzung von IN-Austausch gegen INNER JOIN in der MySQL-Optimierung

Eine Zusammenfassung einiger häufig verwendeter MySQL-Optimierungsmethoden

Eine Zusammenfassung häufig verwendeter SQL-Anweisungsabfragemethoden für die MySQL-Optimierung

Das obige ist der detaillierte Inhalt vonZusammenfassung der MySQL-Optimierung – Gesamtzahl der Abfragen. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Verwandte Etiketten:
Quelle:php.cn
Erklärung dieser Website
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
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage