SQL-Optimierungsmethoden: 1. Vermeiden Sie die Verwendung von [select *], da nutzlose Felder die Abfrageeffizienz verringern. 2. Vermeiden Sie die Verwendung von „in“ und „not in“, Sie können stattdessen zwischen „exists“ und „exists“ wählen , können Sie stattdessen Union wählen.
SQL-Optimierungsmethode:
(empfohlenes Lernen: MySQL-Tutorial)
1 ein Index in der Tabelle, der den Feldern Priorität gibt, die von where und gruppiert nach verwendet werden.
2. Vermeiden Sie die Verwendung von select *. Die Rückgabe nutzloser Felder verringert die Abfrageeffizienz. Wie folgt:
SELECT * FROM t
Optimierungsmethode: Verwenden Sie bestimmte Felder anstelle von * und geben Sie nur die verwendeten Felder zurück.
3. Vermeiden Sie die Verwendung von „in“ und „nicht in“, da dies dazu führen würde, dass die Datenbank-Engine den Index aufgibt und einen vollständigen Tabellenscan durchführt. Wie folgt:
SELECT * FROM t WHERE id IN (2,3) SELECT * FROM t1 WHERE username IN (SELECT username FROM t2)
Optimierungsmethode: Wenn es sich um einen kontinuierlichen Wert handelt, kann er durch between ersetzt werden. Wie folgt:
SELECT * FROM t WHERE id BETWEEN 2 AND 3
Wenn es sich um eine Unterabfrage handelt, kann sie durch „exists“ ersetzt werden. Wie folgt:
SELECT * FROM t1 WHERE EXISTS (SELECT * FROM t2 WHERE t1.username = t2.username)
4. Vermeiden Sie die Verwendung von oder, da dies dazu führen würde, dass die Datenbank-Engine den Index aufgibt und einen vollständigen Tabellenscan durchführt. Wie folgt:
SELECT * FROM t WHERE id = 1 OR id = 3
Optimierungsmethode: Union kann anstelle von oder verwendet werden. Wie folgt:
SELECT * FROM t WHERE id = 1 UNION SELECT * FROM t WHERE id = 3
(PS: Wenn die Felder auf beiden Seiten von oder gleich sind, wie im Beispiel. Es scheint, dass die beiden Methoden ungefähr die gleiche Effizienz haben, selbst wenn Union den Index scannt, oder scannt die gesamte Tabelle)
5. Versuchen Sie, Fuzzy-Abfragen am Anfang von Feldern zu vermeiden, die dazu führen, dass die Datenbank-Engine den Index aufgibt und einen vollständigen Tabellenscan durchführt. Wie folgt:
SELECT * FROM t WHERE username LIKE '%li%'
Optimierungsmethode: Versuchen Sie, nach dem Feld eine Fuzzy-Abfrage zu verwenden. Wie folgt:
SELECT * FROM t WHERE username LIKE 'li%'
6. Vermeiden Sie die Beurteilung von Nullwerten, da dies dazu führen würde, dass die Datenbank-Engine den Index aufgibt und einen vollständigen Tabellenscan durchführt. Wie folgt:
SELECT * FROM t WHERE score IS NULL
Optimierungsmethode: Sie können dem Feld einen Standardwert von 0 hinzufügen und den Wert 0 beurteilen. Wie folgt:
SELECT * FROM t WHERE score = 0
7. Versuchen Sie zu vermeiden, Ausdrücke und Funktionsoperationen auf der linken Seite des Gleichheitszeichens in der Where-Bedingung auszuführen, da dies dazu führen würde, dass die Datenbank-Engine den Index aufgibt und einen vollständigen Tabellenscan durchführt. Wie folgt:
SELECT * FROM t2 WHERE score/10 = 9 SELECT * FROM t2 WHERE SUBSTR(username,1,2) = 'li'
Optimierungsmethode: Ausdrücke und Funktionsoperationen können auf die rechte Seite des Gleichheitszeichens verschoben werden. Wie folgt:
SELECT * FROM t2 WHERE score = 10*9 SELECT * FROM t2 WHERE username LIKE 'li%'
8. Wenn die Datenmenge groß ist, vermeiden Sie die Verwendung der Bedingung 1=1. Um die Zusammenstellung von Abfragebedingungen zu erleichtern, verwenden wir normalerweise diese Bedingung standardmäßig, und das Datenbankmodul verwirft den Index und führt einen vollständigen Tabellenscan durch. Wie folgt:
SELECT * FROM t WHERE 1=1
Optimierungsmethode: Verwenden Sie Code, um beim Zusammenstellen von SQL zu beurteilen. Wenn es kein „Wo“ gibt, fügen Sie „Wo“ hinzu.
Das obige ist der detaillierte Inhalt vonWelche Methoden gibt es zur SQL-Optimierung?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!