2009-08-07 9 views

Répondre

0

Pourquoi pas varchar2 (10)? Utilisez-vous vraiment la chaîne entière pour chaque enregistrement?

+0

Ok. Même si je le change en Varchar (10), c'est bien. Je me demandais juste s'il y aura un effet sur l'utilisation de fns construit dans Oracle comme substr(), instr(), etc. Je ne vois aucun impact. Mais je voulais confirmer avant de donner un feu vert. –

+0

Je serais choqué si vous pouviez mesurer n'importe quel impact du tout. Juste un appel ... Le roll-forward est facile, le roll-back, pas autant. –

+0

Tout à fait d'accord. ;-) Merci beaucoup l'homme. :-) –

1

Je crois que lorsque vous augmentez un champ char, des espaces supplémentaires sont ajoutés pour remplir ceux qui ne sont pas déjà remplis, dans certaines bases de données sinon toutes.

Cela peut avoir un impact sur certains programmes qui n'attendaient pas ce comportement et peut entraîner des problèmes de sortie si des espaces supplémentaires ne sont pas supprimés.

Je suppose que les fonctions de type sous-chaîne (et celles qui dépendent de la longueur de la chaîne) peuvent également être affectées car la longueur de votre chaîne a maintenant changé.

0

Dans le vide, il ne devrait pas y avoir d'impact réel de l'expansion du type de données VARCHAR2 sur une colonne. Contrairement à CHAR qui sont remplis à droite avec des blancs, une taille plus grande de VARCHAR2 ne modifiera sensiblement aucun enregistrement existant. Cependant, comme d'autres l'ont mentionné, ce que nous ne pouvons pas prédire, c'est ce qui se passe dans n'importe quelle couche de la base de données qui peut dépendre de la taille de la colonne, mais je suis sûr que vous pourriez répondre mieux que nous.

Attention, il n'est pas si simple de redimensionner une colonne VARCHAR2. Même si vos données sont dans les nouvelles limites, Oracle insistera pour que la colonne soit vide. Le mieux est d'exporter les lignes et de reconstruire la table ou de mélanger les colonnes (créer une nouvelle colonne, migrer des valeurs, supprimer une ancienne colonne).

0

« Lors de la sélection de cette ligne »

Dans ces cas, le seul impact que vous pourriez souffrir est troncature inattendu. Je me souviens avoir demandé une fois au spécialiste DB2 de mon entreprise ce que signifiait la valeur de l'indicateur "-2". Il ne savait pas. Mais si vous avez une requête n'importe où qui implique "LENGTH (yourcolumnname)", et il s'avère que votre code repose sur cette invocation LENGTH() pour ne jamais retourner quelque chose> 4, alors bien sûr vous êtes en difficulté.

Questions connexes