Mysql
 sql >> Base de données >  >> RDS >> Mysql

Passer de varchar à mediumtext entraîne une dégradation des performances

Les deux types de données sont traités pratiquement de la même manière. Il existe de nombreuses autres raisons possibles de lenteur. (Mais aucun que je connaisse ne dirait MEDIUMTEXT est pire que VARHAR .)

Alors... Voyons si nous pouvons accélérer la page Web...

Mettez microtime(true) autour des appels mysql - pour s'assurer qu'il s'agit de MySQL, pas de PHP. "0.019secs" a du sens ; "1,5 - 2 secondes" ressemble à quelque chose qui se passe en PHP.

Utilisez InnoDB, pas MonISAM. (Malgré vos affirmations contraires.)

Accordez correctement; voyons SHOW VARIABLES LIKE '%buffer%'; Combien de RAM as-tu? (L'échange est terrible pour les performances.)

Combien de lignes retournez-vous ? Il n'est pas pratique d'en avoir plus de quelques dizaines sur une page Web, alors ajoutez ORDER BY...LIMIT... .

Si la limite de l'interface utilisateur est de 1 000 caractères, utilisez TEXT ou VARCHAR(1000) , pas MEDIUMTEXT . Si vous essayez d'augmenter jusqu'à 64 Ko octets (potentiellement 4K utf8mb4 caractères ), puis utilisez TEXT .

Vous avez besoin de ceci (avec les colonnes dans n'importe quel ordre) :

INDEX(part_id, language)

S'il y a eu beaucoup de "churn" (suppressions et/ou mises à jour suivies de plusieurs insertions) dans la table MyISAM, les données peuvent être fragmentées, donc lentes. Cela peut arriver à la fois pour VARCHAR et TEXT . Cela ne se produit pas avec InnoDB.