Maison >base de données >tutoriel mysql >Comment la restructuration de bases de données peut-elle optimiser une requête MySQL lente et éliminer les E/S disque ?

Comment la restructuration de bases de données peut-elle optimiser une requête MySQL lente et éliminer les E/S disque ?

Susan Sarandon
Susan Sarandonoriginal
2024-12-30 14:44:171004parcourir

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

Optimisation des requêtes MySQL pour réduire le temps d'exécution et éliminer les E/S disque

Dans un scénario d'application Web typique, les performances d'une requête de base de données est crucial pour maintenir une expérience utilisateur réactive. Cet article traite d'une requête MySQL spécifique qui présentait des temps d'exécution lents, entraînant de mauvaises performances du site Web.

La requête en question rejoint trois tables : "poster_data", "poster_categories" et "poster_prodcat". Il vise à récupérer les données des tables en fonction d'une condition spécifique sur la table "poster_prodcat". Le plan d'exécution des requêtes a révélé l'implication de la table "poster_prodcat" et son écriture sur le disque, indiquant une récupération de données inefficace.

Pour résoudre le problème de performances, nous avons exploré une approche alternative qui implique de restructurer la base de données et les requêtes. Plus précisément, nous avons créé de nouvelles tables nommées « poster », « category » et « poster_category ». La table "poster_category" a été conçue avec un index composite clusterisé sur les colonnes (cat_id, poster_id).

Avec ce nouveau schéma, nous avons réécrit la requête d'origine comme suit :

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;

Le Le plan EXPLAIN pour la requête réécrite révèle une amélioration significative des performances. La requête utilise désormais efficacement les index, réduisant ainsi le besoin d'E/S disque et minimisant le temps d'exécution.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn