web-dev-qa-db-fra.com

Texte riche: Varchar, Texte ou Blob dans MySQL

Question : Dans mon application Web (PHP/MySQL), je sauve le texte riche. Cela peut être n'importe quoi d'un couple de mots à plusieurs pages. Je suis sûr que je pourrais vous échapper avec l'utilisation de VARCHAR, TEXT ou BLOB _ pour stocker le marquage ou le code HTML à partir d'un éditeur de texte riche comme TinyMCE. Que devrais-je utiliser?

Mes résultats jusqu'à présent : Dans toute ma recherche cette semaine, je n'ai rien trouvé qui a essayé d'être une source définitive quant au mieux en général. Je pense que VARCHAR est une norme et TEXT n'est pas. BLOB est destiné aux données binaires et de surkill. TEXT peut être obsolète dans certains SGBD. Une préoccupation majeure que j'ai tournée autour de mon ignorance sur la manière dont VARCHAR est enregistré dans la base de données. C'est-à-dire que si je max que je maxez (ou laissez-le indéfini) pourrez gaspiller le stockage ou la mémoire s'il n'y a que quelques mots? Ou comme un dB moderne, MySQL ne stocke pas les données vides comme espace réservé? Mes recherches ont indiqué que la différence de performance est très mineure dans les systèmes modernes entre VARCHAR et TEXT requêtes. En outre, je n'ai pas besoin de faire de nombreuses recherches de texte dans le contenu. Cependant, je ne prévois que la capacité de le faire serait un avantage, à long terme.

Conclusion provisoire : Je pense être les meilleurs et conformes aux normes (priorité faible), je devrais faire un type VARCHAR sans limite. Ensuite, insérez simplement les données de marquage, de HTML ou de textile. Je suppose que non spécifier une limite maximum de la capacité de données sur le serveur.

seraitVARCHARSoyez le meilleur standard à utiliser? Ou est-ce que je suis parti complètement sur le Rails dans mes recherches?

3
ShawnPConroy

Cela dépendrait de la taille des données que vous souhaitez enregistrer dans ce champ. Vous devriez savoir qu'il existe une limite pour VARCHAR et cette limite est en octets, le nombre de caractères pouvant être stocké dépendra du jeu de caractères que vous utilisez. Par exemple, si vous utilisez UTF 8, vous pourrez stocker moins de données.

Pour résumer, il n'y a pas de "meilleure" solution, mais si vos données conviennent à VARCHAR, puis utilisez-le :). Sinon, vous devrez utiliser TEXT ou BLOB _ ou vous devrez sélectionner les données avant de l'enregistrer (chèque compresse )

1
Jehad Keriaki