Maison >base de données >tutoriel mysql >Pourquoi ma requête MySQL sur une grande table est-elle si lente et comment puis-je l'optimiser ?
Optimisation des requêtes MySQL pour les grandes tables avec un temps d'exécution lent
Votre requête MySQL prend plus d'une minute à s'exécuter car elle ne dispose pas d'un index efficace pour optimiser la récupération des données. La taille énorme de la table, en particulier plus d'un million d'enregistrements, exacerbe le problème.
L'indexation de la table sur la colonne id est cruciale pour accélérer les requêtes qui impliquent un tri par identifiant. Cependant, sur la base des informations fournies, il semble que l'indexation seule ne soit pas suffisante.
Voici quelques suggestions pour améliorer les performances des requêtes :
Utilisez une requête de plage avec la clause WHERE
Au lieu d'utiliser LIMIT pour récupérer une plage spécifique d'enregistrements, envisagez d'utiliser une clause WHERE avec des opérateurs relationnels. Par exemple, la requête suivante utilise une requête de plage pour sélectionner les enregistrements dont les valeurs d'identifiant sont supérieures ou égales à 499501 et limite le résultat à 500 lignes :
select * from `ratings` where id >= 499501 limit 500;
Cette requête devrait s'exécuter beaucoup plus rapidement car elle exploite l'index colonne id pour localiser efficacement les enregistrements souhaités.
Expliquez la requête Plan
Pour résoudre davantage le problème, exécutez une requête EXPLAIN pour obtenir des informations sur le plan d'exécution de la requête. Cela fournira des détails sur le type de requête, les index utilisés et le nombre estimé de lignes à analyser.
explain select * from `ratings` where id >= 499501 limit 500;
Éliminer les blocages
Les blocages se produisent lorsque deux transactions simultanées ou plus s'attendent pour libérer les verrous, empêchant ainsi l'une ou l'autre de se poursuivre. Bien que les informations fournies ne suggèrent pas une impasse comme cause possible, cela vaut la peine d'y réfléchir.
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!