Heim >Datenbank >MySQL-Tutorial >Wie kann eine Datenbankrestrukturierung eine langsame MySQL-Abfrage optimieren und Festplatten-E/A eliminieren?

Wie kann eine Datenbankrestrukturierung eine langsame MySQL-Abfrage optimieren und Festplatten-E/A eliminieren?

Susan Sarandon
Susan SarandonOriginal
2024-12-30 14:44:171004Durchsuche

How Can Database Restructuring Optimize a Slow MySQL Query and Eliminate Disk I/O?

Optimierung von MySQL-Abfragen, um die Ausführungszeit zu reduzieren und Festplatten-E/A zu eliminieren

In einem typischen Webanwendungsszenario die Leistung einer Datenbankabfrage ist von entscheidender Bedeutung, um eine reaktionsfähige Benutzererfahrung aufrechtzuerhalten. Dieser Artikel befasst sich mit einer bestimmten MySQL-Abfrage, die langsame Ausführungszeiten aufwies, was zu einer schlechten Website-Leistung führte.

Die betreffende Abfrage verknüpft drei Tabellen: „poster_data“, „poster_categories“ und „poster_prodcat“. Ziel ist es, Daten aus den Tabellen basierend auf einer bestimmten Bedingung in der Tabelle „poster_prodcat“ abzurufen. Der Abfrageausführungsplan ergab die Beteiligung der Tabelle „poster_prodcat“ und deren Schreiben auf die Festplatte, was auf einen ineffizienten Datenabruf hindeutet.

Um das Leistungsproblem zu beheben, haben wir einen alternativen Ansatz untersucht, der eine Umstrukturierung der Datenbank und der Abfragen beinhaltet. Konkret haben wir neue Tabellen mit den Namen „poster“, „category“ und „poster_category“ erstellt. Die Tabelle „poster_category“ wurde mit einem gruppierten zusammengesetzten Index für die Spalten (cat_id, poster_id) entworfen.

Mit diesem neuen Schema haben wir die ursprüngliche Abfrage wie folgt umgeschrieben:

SELECT
    p.*,
    c.*
FROM
    poster_category pc
INNER JOIN
    category c ON pc.cat_id = c.cat_id
INNER JOIN
    poster p ON pc.poster_id = p.poster_id
WHERE
    pc.cat_id = 623
ORDER BY
    p.name
LIMIT
    32;

Die Der EXPLAIN-Plan für die neu geschriebene Abfrage zeigt eine deutliche Leistungsverbesserung. Die Abfrage nutzt nun Indizes effektiv, wodurch der Bedarf an Festplatten-E/A reduziert und die Ausführungszeit minimiert wird.

Das obige ist der detaillierte Inhalt vonWie kann eine Datenbankrestrukturierung eine langsame MySQL-Abfrage optimieren und Festplatten-E/A eliminieren?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
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