ORACLE : occupation mémoire du varchar2

ORACLE : occupation mémoire du varchar2 - SQL/NoSQL - Programmation

Marsh Posté le 22-06-2005 à 11:36:51    

Bonjour,
question simple :
j'ai une table toto, avec une colonne col1 number, et une col2 varchar(1000).
 
Sachant que ma colonne 2 (donc varchar2) est vide dans 99% des cas, est ce que il y a une réservation de 1000 caractères par ligne (dans le tablespace) ou oracle gère intelligement le truc en n'occupant de la place que si le champ est non nul.
Je suis en oracle v7 et supérieur...
 
Merci !!

Reply

Marsh Posté le 22-06-2005 à 11:36:51   

Reply

Marsh Posté le 22-06-2005 à 12:15:56    

batin a écrit :

Bonjour,
question simple :
j'ai une table toto, avec une colonne col1 number, et une col2 varchar(1000).
 
Sachant que ma colonne 2 (donc varchar2) est vide dans 99% des cas, est ce que il y a une réservation de 1000 caractères par ligne (dans le tablespace) ou oracle gère intelligement le truc en n'occupant de la place que si le champ est non nul.
Je suis en oracle v7 et supérieur...
 
Merci !!


 
Aucune idée...[:joce]
Mais est-ce que ce serait pas tout bêtement plus malin de virer ta colonne 2 de cette table et de la mettre dans une autre qui fera la relation entre col1 et col2?


---------------
Can't buy what I want because it's free -
Reply

Marsh Posté le 22-06-2005 à 12:28:40    

sisi bien sur.
Mais bon, c'était pour un exemple.  :wahoo:  
En fait, ma table contient un number + 20 champs textes qui ne sont pas tous remplis (environ 2 ou 3 par lignes).
Impossible de changer la structure de la table, c'est un progiciel ...
 

Reply

Marsh Posté le 22-06-2005 à 12:52:44    

varchar, c'est à taille variable ... il me semble même que ca occupe 1 octet caractère de plus que la chaine à stocker, mais c'est à vérifier.
 
edit : correction mineure ...


Message édité par theshockwave le 22-06-2005 à 12:53:58
Reply

Marsh Posté le 22-06-2005 à 13:20:05    

je confirme oracle intelligement stocke uniquement la taille de la chaine plus un caractere pour la longueur effective...

Reply

Marsh Posté le 22-06-2005 à 16:17:55    

heu ... en quoi oracle est-il intelligent si il réserve systématiquement LONGUEUR_VARCHAR+1 ?
 
Donc, si j'ai 20 champs VARCHAR(100), chaque ligne occupe 2000 (ou 2020 avec le +1) ... C'est nul, surtout si un seul champ est rempli ...
 
c'est quoi la différence entre VARCHAR et VARCHAR2 ?

Reply

Marsh Posté le 22-06-2005 à 16:43:47    

Je ne suis pas sûre mais, je crois que le VARCHAR2 réserve LONGUER_REELLE +1 donc si chaîne vide juste 1.  
C'est d'ailleurs pour ça qu'il vaut mieux utiliser VARCHAR2 que CHAR...

Reply

Marsh Posté le 24-06-2005 à 10:40:27    

oui, c'est bien ce que je voulais dire ... la taille n'est pas fixée à celle donné lors de la création de la table. Il s'agit de la longueur réelle de la chaine stockée +1.
 
donc une chaine "foo" sera stockée avec 4 caractères quand bien même on la stockerait dans un champs prévu pour des chaines allant jusqu'à 200 caractères

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed