MySQL varchar(2000) vs texte?

J'ai besoin de stocker en moyenne un paragraphe de texte, qui serait d'environ ~800 caractères dans la base de données. Dans certains cas rares, il peut aller jusqu'à 2000-2500~ caractères. J'ai lu le manuel et je sais qu'il ya beaucoup de ces questions déjà, mais j'ai lu plus de 10+ questions sur stackoverflow et je trouve toujours un peu difficile à comprendre si je dois simplement utiliser du texte ou quelque chose comme varchar(2000). La moitié semble dire l'utilisation de type varchar, tandis que l'autre demi-dire du texte. Certaines personnes disent toujours utiliser le texte si vous avez plus de 255 caractères (oui, c'était après 5.0.3 qui a permis varchar jusqu'à 65k). Mais ensuite j'ai pensé à moi-même si je devais utiliser du texte chaque fois que les personnages ont plus de 255, alors pourquoi mysql peine l'augmentation de la taille du tout si cela a toujours été la meilleure option?

Ils ont une taille variable de stockage que j'ai lu, donc y aurait-il pas de différence dans ma situation? Personnellement, j'ai été penché vers varchar(2000) puis j'ai lu que varchar stocke les données en direct tandis que le texte ne le fait pas. Est-ce à dire que, si j'ai constamment la sélection de cette colonne, le stockage de données varchar serait mieux, et à l'inverse si j'ai rarement la sélection de cette colonne, puis en utilisant le texte serait mieux? Si cela est vrai, je pense que je voudrais maintenant, choisissez la colonne de texte que je ne vais pas être la sélection de cette colonne de nombreuses fois j'ai l'exécution d'une requête sur la table. Si c'est important, cette table est également fréquemment rejoint aussi bien (mais qui ne sera pas le choix de la colonne), serait-ce aussi les avantages de l'utilisation de texte?

Sont mes hypothèses de corriger ce que je doit aller avec le texte dans ce cas?

  • Penser en termes de l'utilisation de la mémoire. Les champs VARCHAR sont une partie de la ligne, où les colonnes de TEXTE sont juste fait sur le disque par une adresse dans la ligne. Votre décision aura une incidence sur la mise en cache de requêtes (combien de jeux de résultats peuvent tenir dans ce mémoire), la table de cache (le nombre de tables qui peuvent tenir dans la mémoire), le nombre de lignes tenir dans diverses par requête tampons, etc.
InformationsquelleAutor Joker | 2011-02-19