SELECT * FROM employees WHERE last_name = 'Smith';
Wenn Sie eine einzelne Spalte einer Tabelle mehrmals abfragen, erstellen Sie einen Index für diese Spalte
Wenn Sie oder Ihre App Daten aus mehreren Spalten basierend auf Bedingungen benötigen, erstellen Sie einen zusammengesetzten Index
Zum Beispiel enthält Ihre Tabelle Spalten wie „created_at“ und „Updated_At“ sowie Zeitstempel. Vermeiden Sie die Auswahl von *, da diese in normalen Szenarios nicht benötigt werden
Ineffiziente Abfrage
SELECT * FROM orders WHERE order_date > '2023-01-01';
Optimierte Abfrage
SELECT order_id, customer_id FROM orders WHERE order_date > '2023-01-01';
Wenn Sie Tabellen mit Primärschlüssel verknüpfen, ist keine Erstellung erforderlich, da der Primärschlüssel bereits ein Index ist
SELECT orders.order_id, customers.name FROM orders JOIN customers ON orders.customer_id = customers.id WHERE customers.country = 'USA';
In der obigen Abfrage muss die „orders.customer_id“ indiziert werden und es handelt sich um eine Beziehung aus einer anderen Tabelle
customers.id ist ein Primärschlüssel der Kundentabelle, sodass kein Index erstellt werden muss
customers.country muss indiziert werden, da es sich um eine Bedingung handelt
wie die Auflistung von Benutzern und Bestellungen und anderen Dingen, die sich nicht häufig ändern
CREATE TABLE orders ( order_id INT NOT NULL, order_date DATE NOT NULL, ... PRIMARY KEY (order_id, order_date) ) PARTITION BY RANGE (YEAR(order_date)) ( PARTITION p0 VALUES LESS THAN (2000), PARTITION p1 VALUES LESS THAN (2010), PARTITION p2 VALUES LESS THAN (2020), PARTITION p3 VALUES LESS THAN MAXVALUE );
Das obige ist der detaillierte Inhalt vonDie Abfrageoptimierung in MySQL ist entscheidend für die Verbesserung der Datenbankleistung, insbesondere beim Umgang mit großen Datenmengen. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!