J'ai une table de messages dans MySQL qui enregistre des messages entre utilisateurs. En dehors des ids et des types de messages typiques (tous des types entiers), j'ai besoin de sauvegarder le texte du message réel en tant que VARCHAR ou TEXT. Je fixe une limite côté front-end de 3000 caractères, ce qui signifie que les messages ne seront jamais insérés dans la base de données avec une longueur supérieure à cela.
Y a-t-il une justification pour choisir entre VARCHAR(3000) ou TEXT ? Il y a quelque chose à propos d'écrire simplement VARCHAR(3000) qui semble quelque peu contre-intuitif. J'ai parcouru d'autres publications similaires sur Stack Overflow mais ce serait bien d'obtenir des points de vue spécifiques à ce type de stockage de messages courant.
33 votes
Un peu vieux, mais je suis venu ici parce que je suis tombé sur un problème qui m'a fait réfléchir à cela. Dans mon cas, mon formulaire front-end était limité à 2 000 caractères, mais le codage implicite dans ma méthode de stockage encodait les caractères internationaux sous forme de plusieurs caractères (ce qui peut apparemment varier de 3 à 12 par caractère). Ainsi, mes 2 000 caractères deviennent soudainement jusqu'à 24 000. Quelque chose à méditer...
3 votes
J'ai trouvé que le texte était significativement plus rapide pour de nombreuses insertions concurrentes.
1 votes
@JamesS: utf8mb4... >.< @JamesS: utf8mb4... >.<
1 votes
Voici un nouveau fil : dba.stackexchange.com/questions/210408/…
1 votes
@Rick James - La question à laquelle vous avez fait référence n'est pas du tout la même question. Veuillez noter que ce fil de discussion a été consulté 400 000 fois et vous proposez de le remplacer par quelque chose avec seulement 35 vues et votre propre réponse en tête ? Cette question est toujours parfaitement valide et les réponses ici constituent un enregistrement utile.
11 votes
@RickJames envisagez de poster une réponse mise à jour plutôt que de fermer la question
3 votes
@YvetteColomb - J'ai ajouté une réponse. J'aimerais surtout me débarrasser de la réponse acceptée car elle est désuète. Je suis venu sur le site de questions-réponses parce que quelqu'un citait des informations incorrectes en disant "754 votes positifs, donc ça doit être vrai". D'accord, j'ai également modifié la réponse approuvée. (Bien que cela semble incorrect.)
1 votes
MySQL :: MySQL 8.0 Manuel de référence :: 15.10 Formats de ligne InnoDB