La recherche sur Google semble être mitigée, que la taille d'une VARCHAR2
colonne dans Oracle ait un impact sur les performances ou non.
Je voudrais donner VARCHAR
une petite touche à la question de la taille et j'espère avoir un aperçu de ceci:
Étant donné les champs de texte libre (multilignes) ( pas des éléments courts comme les noms) que vous souhaitez stocker dans une base de données (Oracle), y a-t-il un intérêt (par rapport aux performances ou autres) à ne pas maximiser la VARCHAR
capacité ( VARCHAR2(4000)
sur Oracle) mais à choisir une valeur plus petite telle que 1024 ou 512 car cela sera probablement suffisant dans 98% des cas de toute façon.
oracle
performance
varchar
Martin
la source
la source
Réponses:
Cela a un impact sur l'utilisation de la mémoire, en particulier lorsqu'un programme client doit allouer suffisamment de mémoire pour recevoir un ensemble de données.
Gardez à l'esprit que de nombreuses applications (en particulier les applications Web) utilisent UTF-8, qui est un jeu de caractères multi-octets. En tant que tel, vous devriez vraiment considérer les caractères plutôt que les octets.
Si je m'attendais à plus d'un millier de caractères, je considérerais activement un CLOB. Je me demanderais s'il stockerait du texte brut ou une forme de balisage (wiki / html?), Une utilisation avec des langues non européennes. Les questions et réponses ici, par exemple, seraient CLOB, mais les commentaires peuvent tenir dans un VARCHAR.
Si vous maximisez un VARCHAR, alors dans six mois, quelqu'un voudra le rendre encore plus grand, et vous vous donneriez un coup de pied pour ne pas utiliser un CLOB.
la source
En règle générale, il n'y a pas de considérations de performances, bien qu'il existe des problèmes secondaires qui pourraient vous intéresser . La limite pour un
varchar
doit être considérée comme une contrainte comme les autres - elle est là pour appliquer une règle commerciale.OMI, la question que vous devriez vous poser est "Est-ce que je veux empêcher que les données en texte libre stockées dans ce champ soient plus longues que n octets / caractères" - c'est le seul facteur déterminant lors du choix entre
varchar(512)
etvarchar(4000)
.Notez que je suppose que vous parlez
varchar
du type SQL - la situation est différentepl/sql
et le choix de la longueur peut être crucial pour des raisons d'allocation de mémoire.la source
clob
, n'est-ce pas?Si une valeur plus petite fonctionne pour 98% des cas, mais qu'il faut un Varchar2 (4000) pour fonctionner pour 100% des cas, alors vous n'avez pas d'autre choix que d' utiliser la plus grande valeur . La création d'une table séparée pour 2% des valeurs, puis la coordination des insertions / sélections, etc. ajouterait de la complexité qui annulerait tout avantage en termes de mémoire ou de performances de ne pas étendre le champ.
la source