Die Leistung der Datenbank ist meiner Meinung nach sehr wichtig. Optimieren wir die MySQL-Datenbank.
1. Wählen Sie das am besten geeignete Feld Attribute
MySQL kann den Zugriff auf große Datenmengen gut unterstützen, aber im Allgemeinen ist dies umso schwieriger, je kleiner die Tabelle in der Datenbank ist Das Ausführen von Abfragen wird schneller sein. Um eine bessere Leistung zu erzielen, können wir daher beim Erstellen einer Tabelle die Breite der Felder in der Tabelle so klein wie möglich einstellen. Wenn Sie beispielsweise das Feld „Postleitzahl“ auf CHAR(255) festlegen, wird der Datenbank offensichtlich unnötiger Speicherplatz hinzugefügt. Selbst die Verwendung des Typs VARCHAR ist überflüssig, da CHAR(6) in Ordnung ist. Ebenso sollten wir, wenn möglich, MEDIUMINT anstelle von BIGIN verwenden, um Ganzzahlfelder zu definieren.
Eine weitere Möglichkeit zur Verbesserung der Effizienz besteht darin, Felder nach Möglichkeit auf NOT NULL zu setzen, damit die Datenbank in Zukunft bei der Ausführung von Abfragen keine NULL-Werte vergleichen muss.
Für einige Textfelder, wie zum Beispiel „Provinz“ oder „Geschlecht“, können wir sie als ENUM-Typ definieren. Denn in MySQL wird der ENUM-Typ als numerische Daten behandelt und numerische Daten werden viel schneller verarbeitet als Texttypen. Auf diese Weise können wir die Leistung der Datenbank verbessern.
2. Verwenden Sie Verknüpfungen (JOIN) anstelle von Unterabfragen (Unterabfragen).
MySQL unterstützt SQL-Unterabfragen ab 4.1. Diese Technik kann eine SELECT-Anweisung verwenden, um eine einzelne Spalte mit Abfrageergebnissen zu erstellen und dieses Ergebnis dann als Filterbedingung in einer anderen Abfrage zu verwenden. Wenn wir beispielsweise Kunden löschen möchten, die keine Bestellungen in der Basis-Kundeninformationstabelle haben, können wir mithilfe einer Unterabfrage zunächst die IDs aller Kunden abrufen, die Bestellungen aus der Verkaufsinformationstabelle aufgegeben haben , und übergeben Sie die Ergebnisse dann wie folgt an die Hauptabfrage:
DELETE FROM customerinfo
WHERE CustomerID NOT in (SELECT CustomerID FROM salesinfo )
Unterabfrage verwenden um alles auf einmal zu erledigen. Es kann viele SQL-Vorgänge ausführen, für deren Abschluss logischerweise mehrere Schritte erforderlich sind. Außerdem können Transaktions- oder Tabellensperren vermieden werden, und es ist auch einfach zu schreiben. In einigen Fällen können Unterabfragen jedoch durch effizientere Verknüpfungen (JOIN) ersetzt werden. Angenommen, wir möchten alle Benutzer extrahieren, die keine Bestelldatensätze haben, können wir die folgende Abfrage verwenden, um sie zu vervollständigen:
SELECT * FROM customerinfo
WHERE CustomerID NOT in (SELECT CustomerID FROM salesinfo)
Wenn Sie Connection (JOIN) verwenden, um diese Abfrage abzuschließen, geht es viel schneller. Insbesondere wenn es einen Index für CustomerID in der salesinfo-Tabelle gibt, ist die Leistung besser. Die Abfrage lautet wie folgt:
SELECT * FROM customerinfo
LEFT JOIN salesinfoON customerinfo.CustomerID=salesinfo.
CustomerID
WHERE salesinfo.CustomerID IS NULL
Join (JOIN). Der Grund, warum es effizienter ist, liegt darin, dass MySQL keine temporäre Tabelle im Speicher erstellen muss, um diesen logischen Schritt abzuschließen . Abfragearbeit.
3. Verwenden Sie Union (UNION), um manuell erstellte temporäre Tabellen zu ersetzen.
MySQL unterstützt UNION-Abfragen ab Version 4.0, die zwei oder mehr Daten kombinieren können, die temporäre Tabellen verwenden müssen werden zu einer Abfrage zusammengeführt. Wenn die Abfragesitzung des Clients endet, wird die temporäre Tabelle automatisch gelöscht, um sicherzustellen, dass die Datenbank aufgeräumt und effizient ist. Wenn wir UNION zum Erstellen einer Abfrage verwenden, müssen wir UNION nur als Schlüsselwort verwenden, um mehrere SELECT-Anweisungen zu verbinden. Es ist zu beachten, dass die Anzahl der Felder in allen SELECT-Anweisungen gleich sein muss. Das folgende Beispiel zeigt eine Abfrage mit UNION.
SELECT Name, Phone FROM client
UNION
SELECT Name, BirthDatumFROM Author
UNION
SELECT Name, Lieferant FROM Produkt
4. Angelegenheiten
Obwohl wir Unterabfragen, Joins (JOIN) und Unions (UNION) verwenden können, um eine Vielzahl von Abfragen zu erstellen, können nicht alle Datenbankoperationen mit nur einer oder wenigen Abfragen durchgeführt werden. Sie können mit nur einer abgeschlossen werden SQL-Anweisung. Häufiger ist eine Reihe von Erklärungen erforderlich, um eine bestimmte Art von Arbeit abzuschließen. Wenn in diesem Fall jedoch eine bestimmte Anweisung in diesem Anweisungsblock fehlerhaft ausgeführt wird, wird die Funktionsweise des gesamten Anweisungsblocks unsicher. Stellen Sie sich vor, Sie möchten bestimmte Daten gleichzeitig in zwei verwandte Tabellen einfügen. Dies kann passieren: Nachdem die erste Tabelle erfolgreich aktualisiert wurde, tritt eine unerwartete Situation in der Datenbank auf, die dazu führt, dass der Vorgang in der zweiten Tabelle nicht abgeschlossen wird. Auf diese Weise werden die Daten unvollständig und sogar die Daten in der Datenbank werden zerstört. Um diese Situation zu vermeiden, sollten Sie Transaktionen verwenden. Ihre Funktion ist: Entweder ist jede Anweisung im Anweisungsblock erfolgreich oder schlägt fehl. Mit anderen Worten: Die Konsistenz und Integrität der Daten in der Datenbank kann gewahrt bleiben. Die Dinge beginnen mit dem Schlüsselwort BEGIN und enden mit dem Schlüsselwort COMMIT. Wenn in diesem Zeitraum ein SQL-Vorgang fehlschlägt, kann der ROLLBACK-Befehl die Datenbank in den Zustand vor dem Start von BEGIN zurückversetzen.
BEGIN;
INSERT INTO salesinfo SET CustomerID=14;
UPDATE inventory SET Quantity=11
WHERE item='book';
COMMIT;
Eine weitere wichtige Rolle von Transaktionen besteht darin, dass, wenn mehrere Benutzer gleichzeitig dieselbe Datenquelle verwenden, die Methode zum Sperren der Datenbank verwendet werden kann, um Benutzern eine sichere Zugriffsmethode bereitzustellen, die den Betrieb des Benutzers sicherstellen kann Störungen durch andere Benutzer werden nicht blockiert.
Das obige ist der detaillierte Inhalt vonEinfache Methode zur MySQL-Datenbankoptimierung. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!