Heim Backend-Entwicklung PHP-Tutorial Interviewfrage: Sprechen Sie darüber, wie Sie MySQL-Datenbankabfragen optimieren können

Interviewfrage: Sprechen Sie darüber, wie Sie MySQL-Datenbankabfragen optimieren können

Aug 08, 2016 am 09:19 AM
count database

1. Datentypen optimieren

Wenn Sie ein DBA sind, überprüfen Sie die Datentypen streng nach dem Optimierungsprinzip . , aber Entwickler entscheiden sich möglicherweise für die ihrer Meinung nach einfachste Lösung, um die Codierung zu beschleunigen, oder wählen die naheliegendste Option, sodass Sie möglicherweise nicht mit der besten Wahl konfrontiert werden und wenn möglich versuchen sollten, diese Entscheidungen zu ändern.

(1) Vermeiden Sie die Verwendung von NULL

NULL erfordert für die meisten Datenbanken eine spezielle Behandlung, und MySQL ist keine Ausnahme, es erfordert mehr Code, mehr Aufgrund von Prüfungen und spezieller Indexlogik wissen einige Entwickler überhaupt nicht, dass NULL der Standardwert beim Erstellen einer Tabelle ist, aber in den meisten Fällen sollten Sie NOT NULL oder einen speziellen Wert wie 0, -1 als Standardwert verwenden.

 (2) Es dürfen nur kleinere Felder verwendet werden

Nachdem MySQL die Daten von der Festplatte gelesen hat, werden sie im Speicher gespeichert und dann Verwendete CPU-Zyklen und Festplatten-E/A lesen es, was bedeutet, dass je kleiner der Datentyp ist, desto weniger Platz beansprucht er und die Effizienz beim Lesen von der Festplatte oder beim Packen in den Speicher ist besser, aber seien Sie nicht zu besessen davon Reduzieren des Datentyps, wenn kein Platz für zukünftige Änderungen an der Anwendung ist. Das Ändern der Tabelle erfordert eine Rekonstruktion, was indirekt zu Codeänderungen führen kann. Dies bereitet Kopfschmerzen, daher muss ein Gleichgewicht gefunden werden.

2. Seien Sie vorsichtig bei der Zeichensatzkonvertierung

Der vom Client oder der Anwendung verwendete Zeichensatz kann sich vom Zeichensatz des unterscheiden Die Tabelle selbst ist erforderlich, um die Konvertierung implizit zur Laufzeit durchzuführen. Außerdem muss ermittelt werden, ob Zeichensätze wie UTF-8 Multibyte-Zeichen unterstützen, sodass sie mehr Speicherplatz benötigen.

3. Optimieren Sie count(my_col) und count(*)

Wenn Sie die MyISAM-Tabelle verwenden, ohne where-Klausel. Verwenden Sie count(*) ist sehr schnell, da die Statistiken über die Anzahl der Zeilen sehr genau sind, sodass MySQL nicht Zeile für Zeile durchsucht, um die Anzahl der Zeilen zu ermitteln. Wenn die Spalte my_col keinen Nullwert hat, ist die oben beschriebene Situation anders . Dasselbe, das heißt, count(my_col) wird sehr schnell sein.

Wenn Sie count() verwenden, wenn eine where-Klausel vorhanden ist, kann grundsätzlich keine weitere Optimierung durchgeführt werden. Die offensichtlichen Indexspalten werden in der where-Klausel überschritten. Nur nützlich, wenn ein abdeckender Index verwendet wird.

Zusätzlich zu den oben genannten Vorschlägen können Sie auch Zusammenfassungstabellen verwenden. Sie ermöglichen es Ihnen, den Inhalt der Tabelle auf dem neuesten Stand zu halten. Sie können Trigger oder Anwendungslogik verwenden, um die Zusammenfassung beizubehalten Stellen Sie sicher, dass die Tabellensumme auf dem neuesten Stand ist, oder führen Sie regelmäßig einen Batch-Job aus, um sie mit den neuesten Daten zu füllen. Wenn Sie Letzteres tun, sind Ihre Informationen sehr ähnlich, aber nicht genau, je nachdem, wie oft der Batch-Job ausgeführt wird Es muss ein Gleichgewicht zwischen dem Bedarf des Programms an genauen Informationen und dem Systemaufwand für die Aktualisierung der Daten gefunden werden.

4. Unterabfragen optimieren

Bei Unterabfragen ist die MySQL-Abfrageoptimierungs-Engine nicht immer die effektivste. Aus diesem Grund Wenn Unterabfragen häufig in Join-Abfragen umgewandelt werden, ist darauf zu achten, dass der Optimierer Join-Abfragen korrekt verarbeiten kann. Dabei muss sichergestellt werden, dass die Join-Spalten der Join-Tabelle (der zweiten Tabelle) normalerweise indiziert werden Scannen Sie eine Tabelle relativ zu einer Teilmenge der Abfrage in der zweiten Tabelle als Teil des Nested-Loop-Algorithmus.

5. UNION optimieren

Die Verwendung von UNION beim Überspannen mehrerer verschiedener Datenbanken ist eine interessante Optimierungsmethode Es dürfen keine doppelten Zeilen vorhanden sein, und die Daten müssen auch sortiert werden. Wir wissen, dass das Sortieren sehr ressourcenintensiv ist, insbesondere das Sortieren großer Tabellen.

UNION ALL kann die Arbeit erheblich beschleunigen. Wenn Sie bereits wissen, dass Ihre Daten keine doppelten Zeilen enthalten, oder es Ihnen egal ist, ob doppelte Zeilen angezeigt werden, verwenden Sie in beiden Fällen UNION. ALL ist besser geeignet. Darüber hinaus können einige Methoden in der Anwendungslogik verwendet werden, um doppelte Zeilen zu vermeiden, sodass die von UNION ALL und UNION zurückgegebenen Ergebnisse zwar gleich sind, UNION ALL jedoch nicht sortiert wird.

Originaltext von [Bitnet]: http://soft.chinabyte.com/database/254/11335754.shtml

Verwandte Lektüre

Optimierung von MySQL (wie man SQL-Anweisungen mit geringer Ausführungseffizienz in MySQL abfragt)

Wie man in MySQL Dutzende von gemeinsamen Abfragen für mehrere Tabellen mit derselben Struktur durchführt Millionen von Datenbanken? Wie kann ich die Abfragegeschwindigkeit optimieren oder einrichten, um sie zu verbessern?

Abfrageoptimierung und Paging-Tests von zig Millionen Daten in der MySQL-Datenbank

MySQL-Lernerfahrung

8 Möglichkeiten zur Optimierung der MySQL-Datenbank

Das Obige stellt die Interviewfragen vor: Sprechen Sie über die Optimierung von MYSQL-Datenbankabfragen, einschließlich Aspekten des Inhalts. Ich hoffe, dass es für Freunde hilfreich ist, die sich für PHP-Tutorials interessieren.

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

Heiße KI -Werkzeuge

Undresser.AI Undress

Undresser.AI Undress

KI-gestützte App zum Erstellen realistischer Aktfotos

AI Clothes Remover

AI Clothes Remover

Online-KI-Tool zum Entfernen von Kleidung aus Fotos.

Undress AI Tool

Undress AI Tool

Ausziehbilder kostenlos

Clothoff.io

Clothoff.io

KI-Kleiderentferner

AI Hentai Generator

AI Hentai Generator

Erstellen Sie kostenlos Ai Hentai.

Heißer Artikel

R.E.P.O. Energiekristalle erklärten und was sie tun (gelber Kristall)
4 Wochen vor By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Beste grafische Einstellungen
4 Wochen vor By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. So reparieren Sie Audio, wenn Sie niemanden hören können
4 Wochen vor By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Chat -Befehle und wie man sie benutzt
4 Wochen vor By 尊渡假赌尊渡假赌尊渡假赌

Heiße Werkzeuge

Notepad++7.3.1

Notepad++7.3.1

Einfach zu bedienender und kostenloser Code-Editor

SublimeText3 chinesische Version

SublimeText3 chinesische Version

Chinesische Version, sehr einfach zu bedienen

Senden Sie Studio 13.0.1

Senden Sie Studio 13.0.1

Leistungsstarke integrierte PHP-Entwicklungsumgebung

Dreamweaver CS6

Dreamweaver CS6

Visuelle Webentwicklungstools

SublimeText3 Mac-Version

SublimeText3 Mac-Version

Codebearbeitungssoftware auf Gottesniveau (SublimeText3)

So beheben Sie den Discuz-Datenbankfehler So beheben Sie den Discuz-Datenbankfehler Nov 20, 2023 am 10:10 AM

Die Lösungen für den Discuz-Datenbankfehler sind: 1. Überprüfen Sie die Datenbankkonfiguration. 3. Überprüfen Sie den Datenbanktabellenstatus. 6. Löschen Sie den Cache ; 7. Überprüfen Sie die Serverressourcen. 8. Kontaktieren Sie den offiziellen Support von Discuz. Um Fehler in der Discuz-Datenbank zu beheben, muss man von mehreren Aspekten ausgehen, schrittweise die Ursache des Problems identifizieren und entsprechende Maßnahmen zur Behebung des Problems ergreifen.

Leak enthüllt wichtige Spezifikationen von Intel Arrow Lake-U, -H, -HX und -S Leak enthüllt wichtige Spezifikationen von Intel Arrow Lake-U, -H, -HX und -S Jun 15, 2024 pm 09:49 PM

Intel Arrow Lake wird voraussichtlich auf der gleichen Prozessorarchitektur wie Lunar Lake basieren, was bedeutet, dass Intels brandneue Lion Cove-Leistungskerne mit den wirtschaftlichen Skymont-Effizienzkernen kombiniert werden. Während Lunar Lake nur als Ava verfügbar ist

Der Unterschied zwischen counta und count Der Unterschied zwischen counta und count Nov 20, 2023 am 10:01 AM

Mit der Count-Funktion wird die Anzahl der Zahlen in einem angegebenen Bereich gezählt. Sie ignoriert Text, logische Werte und Nullwerte, zählt jedoch leere Zellen. Die Count-Funktion zählt nur die Anzahl der Zellen, die tatsächliche Zahlen enthalten. Die Funktion CountA wird verwendet, um die Anzahl der nicht leeren Zellen in einem angegebenen Bereich zu zählen. Es zählt nicht nur Zellen, die tatsächliche Zahlen enthalten, sondern auch die Anzahl nicht leerer Zellen, die Text, logische Werte und Formeln enthalten.

Datenbank „Datenbankname' kann nicht gelöscht werden; Datenbank existiert nicht – So beheben Sie den MySQL-Fehler: Datenbank kann nicht gelöscht werden, Datenbank existiert nicht Datenbank „Datenbankname' kann nicht gelöscht werden; Datenbank existiert nicht – So beheben Sie den MySQL-Fehler: Datenbank kann nicht gelöscht werden, Datenbank existiert nicht Oct 05, 2023 am 11:46 AM

So beheben Sie den MySQL-Fehler: Datenbank kann nicht gelöscht werden, Datenbank existiert nicht. Übersicht: MySQL ist ein häufig verwendetes relationales Datenbankverwaltungssystem. Bei der Verwendung von MySQL müssen wir häufig die Datenbank verwalten, einschließlich der Erstellung von Datenbanken, des Löschens von Datenbanken und anderer Vorgänge. Beim Löschen einer Datenbank wird jedoch manchmal die Fehlermeldung „Can'tdropdatabase'database_name';databasedoesn'texist“ angezeigt, d. h. Sie können die Datenbank nicht löschen.

Zusammenfassung der Nutzungsunterschiede der MySQL Count-Funktion Zusammenfassung der Nutzungsunterschiede der MySQL Count-Funktion Nov 29, 2022 pm 04:47 PM

In diesem Artikel werden die Unterschiede in der Verwendung der MySQL-Funktion vorgestellt. Der Bedarf an statistischen Daten ist in unserer täglichen Entwicklung sehr einfach. Schauen wir uns als Nächstes die Unterschiede zwischen ihnen an. und ob sie einige Fallstricke haben.

Was ist die Verwendung der Zählfunktion in PHP? Was ist die Verwendung der Zählfunktion in PHP? Sep 09, 2021 pm 05:08 PM

Die Verwendung der Zählfunktion in PHP lautet: [count(array,mode);], wobei der Parameter array das zu zählende Array angibt und der Parameter mode den Modus der Funktion angibt.

So lösen Sie das Problem der Anzahl verschiedener Spalten in MySQL So lösen Sie das Problem der Anzahl verschiedener Spalten in MySQL Jun 03, 2023 am 10:49 AM

Die reproduzierte Testdatenbank lautet wie folgt: CREATETABLE`test_distinct`(`id`int(11)NOTNULLAUTO_INCREMENT,`a`varchar(50)CHARACTERSETutf8DEFAULTNULL,`b`varchar(50)CHARACTERSETutf8DEFAULTNULL,PRIMARYKEY(`id`))ENGINE= InnoDBAUTO_INCREMENT =1DEFAULTCHARSET=latin1;Die Testdaten in der Tabelle lauten wie folgt. Jetzt müssen wir die deduplizierten Spalten dieser drei Spalten zählen.

Wie zählt Java Count Elemente in einem Stream? Wie zählt Java Count Elemente in einem Stream? May 11, 2023 pm 04:07 PM

Hinweis 1. Count ist eine Terminaloperation, die die Gesamtzahl der Elemente im Stream zählen kann. Der Rückgabewert ist vom Typ long. 2. count() gibt die Anzahl der Elemente im Stream zurück. Dies ist ein Sonderfall der Induktion (eine Induktionsoperation nimmt eine Folge von Eingabeelementen und kombiniert sie durch wiederholte Anwendung der Kombinationsoperation zu einem zusammenfassenden Ergebnis). Dies ist ein Endvorgang und kann Konsequenzen und Nebenwirkungen haben. Nachdem ein Endvorgang durchgeführt wurde, gilt die Leitung als verbraucht und kann nicht wiederverwendet werden. Beispiel // Überprüfen Sie, ob eine Zeichenfolge in der Liste vorhanden ist, die mit a beginnt, und passen Sie sie an die erste an, d. h. geben Sie truebooleananyStartsWithA=stringCollection.stream().anyMatch((s) zurück

See all articles