J'ai plusieurs champs TEXT et/ou MEDIUMTEXT dans chacune de nos 1000 tables MySQL. Je sais maintenant que les champs TEXT sont écrits sur le disque plutôt qu'en mémoire lorsqu'ils sont interrogés. Est-ce vrai aussi, même si ce champ n'est pas appelé dans la requête? Par exemple, si j'ai une table (tbExam) avec 2 champs (id int (11) et le texte du commentaire) et que j'exécute SELECT id FROM tbExam, est-ce que MySQL doit encore écrire sur le disque avant de retourner les résultats? en mémoire? J'essaye de comprendre si j'ai besoin de reconfigurer nos tables actuelles de DB pour passer à varchar (xxxx) ou garder les champs de texte et reconfigurer les requêtes.Performance du champ MySQL TEXT
Répondre
Je sais maintenant que les champs de texte sont écrits sur le disque plutôt que dans la mémoire lors d'une interrogation
TEXT
champs sont écrits sur le disque uniquement lorsque la requête nécessite une table temporaire pour stocker les résultats intermédiaires de tri multiple ou opérations globales. Cela se produit, par exemple, lorsque vous mélangez DISTINCT
, ORDER BY
et GROUP BY
sur différentes colonnes dans une même requête.
Si votre colonne TEXT
ne fait pas partie de cette table temporaire, MySQL
va d'abord essayer de le créer en utilisant le moteur MEMORY
(qui ne prend pas en charge TEXT
).
MyISAM
Le moteur pour une table temporaire ne sera choisi que si la taille de cette table dépasse @@tmp_table_size
ou si certaines colonnes MEMORY
ne prennent pas en charge.
Pour une requête comme ceci:
SELECT id
FROM tbExam
, une table temporaire ne sera pas nécessaire du tout.
Il existe une légère différence dans la façon plugin moteur de stockage InnoDB
(qui est responsable de l'interaction entre InnoDB
et MySQL
) se comporte par rapport à TEXT
et VARCHAR
champs: un champ VARCHAR
est transmis à la mémoire tampon d'enregistrements en valeur tandis qu'un champ TEXT
est passé par référence.
En interne, InnoDB
magasins TEXT
et VARCHAR
champs d'une même manière: en-ligne si toute la colonne s'insère dans la moitié d'une page, hors ligne, sinon. La différence ci-dessus ne concerne que les problèmes d'interaction InnoDB/MySQL
.
Si vous ne demandez pas ces champs, il n'y a aucune différence.
- 1. Taille réelle du champ TEXT (MySQL)
- 2. Remplacer newline du champ MySQL TEXT pour analyser w/JSON
- 3. Performance atteinte avec CLOB/TEXT?
- 4. MySQL TEXT ou VARCHAR
- 5. Comment stocker et indexer un champ TEXT typique dans MySQL?
- 6. Oracle Équivalent du type TEXT de MySQL
- 7. performance mysql
- 8. Performance MySQL
- 9. MySQL: Trier par taille du champ/longueur
- 10. Question de performance mySql sur la mise à jour du champ indexé
- 11. performance de mysql + php
- 12. performance d'insertion mysql
- 13. mysql numéro de performance
- 14. IIS - Mysql Performance Issue
- 15. High Performance MySQL
- 16. performance requête mysql
- 17. Comment echo $ row [ "Text '] à un champ de texte
- 18. MySQL ajouter du texte à un champ
- 19. MySQL Normalisation procédure stockée performance
- 20. MySQL Syntaxe et « OR » Performance
- 21. MySql Performance Question: MD5 (valeur)
- 22. Performance avec php et mysql
- 23. MySQL Une mauvaise performance Rejoignez
- 24. PDO dans la performance mysql
- 25. Liste Python vs MySQL Select performance
- 26. Aide à l'optimisation/à la performance Mysql
- 27. Traitement des caractères spéciaux MySQL Full Text
- 28. C# performance du paramètre
- 29. Mysql Mise à jour du contenu du champ
- 30. Utilisation de LEFT sur un champ TEXT dans SQL Server
Merci pour la réponse détaillée. Je vais vous donner un point dès que j'aurai 15 points de réputation et que je serai autorisé à le faire. – Jonathon