Maison >base de données >tutoriel mysql >Comment puis-je accélérer une requête lente \'SELECT COUNT(*)...\' avec une clause WHERE dans MySQL ?
Le problème en question concerne un "SELECT" considérablement lent Requête COUNT(*)" dans MySQL, même lorsqu'une clause "WHERE" est appliquée. Pour relever ce défi, il est crucial de comprendre le mécanisme de stockage de MySQL.
InnoDB, le moteur de stockage utilisé dans cette instance, utilise des clés primaires en cluster . Cela signifie que la clé primaire est stockée à côté de la ligne de données dans les mêmes pages de données, plutôt que dans des pages d'index distinctes. Par conséquent, effectuer une analyse de plage sur une clé primaire en cluster nécessite d’analyser toutes les lignes, y compris leurs valeurs de colonnes potentiellement larges. La table en question contient une colonne TEXT, ce qui aggrave encore le problème de performances.
Pour optimiser cette requête, envisagez les stratégies suivantes :
Pour améliorer davantage les performances, envisagez de modifier la colonne "change_event_id". être "BIGINT UNSIGNED" s'il incrémente à partir de zéro. Ce changement peut entraîner une réduction des besoins de stockage et une amélioration des performances.
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!