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.
seraitVARCHAR
Soyez le meilleur standard à utiliser? Ou est-ce que je suis parti complètement sur le Rails dans mes recherches?
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 )