Не, изобщо не е същото.
- Дължината на колоната е полезна метаданна за разработчиците, които създават екрани.
- По същия начин автоматичните инструменти за заявки като TOAD и SQL Developer използват дължината на колоната, когато изобразяват резултати.
- Базата данни използва дължината на променлива, когато разпределя памет за PL/SQL колекции. Тъй като тази памет излиза от PGA supersizing, декларацията на променливата може да доведе до неизправност на програмите, защото паметта на сървъра е изчерпана.
- Има подобни проблеми с декларирането на единични променливи в PL/SQL програмите, просто колекциите са склонни да умножават проблема.
- Колоните с големи размери създават проблеми за съставните индекси. Следното е в база данни с 8K блокове
...
SQL> create table t23 (col1 varchar2(4000), col2 varchar2(4000))
2 /
Table created.
SQL> create index t23_i on t23(col1,col2)
2 /
create index t23_i on t23(col1,col2)
*
ERROR at line 1:
ORA-01450: maximum key length (6398) exceeded
SQL>
Но преди всичко, размерите на колоните са форма на проверка на грешки. Ако колоната трябва да е дълга десет знака и някакъв автономен процес се опитва да зареди хиляда знака, значи нещо не е наред. Процесът трябва да се провали, така че можем да проучим защо зареждаме duff данни. Алтернативата е база данни, пълна с боклук, и ако това е, което искахме, трябваше просто да дадем на всички Excel и да приключим с него.
Вярно е, че промяната на размера на колоната, когато се окаже, че сме подценили, може да бъде уморителна. Но това не се случва много често и можем да смекчим голяма част от болката, като използваме %TYPE и SUBTYPE декларации в нашия PL/SQL вместо твърдо кодиране на променливи дължини.
Числата са различни. Като начало максималният размер на число е много по-малък от текстовия еквивалент (38 цифри с гарантирана точност).
Но основната разлика е, че Oracle съхранява числови стойности в научна нотация така че няма пряка връзка между аритметичния размер на числото и пространството за съхранение, което то заема.
SQL> select vsize(123456789012345678901) n1
2 , vsize(999999999999999999999999999999) n2
3 , vsize(0.000000000000000000001) n3
4 , vsize(1000000000000000000000000) n4
5 from dual
6 /
N1 N2 N3 N4
---------- ---------- ---------- ----------
12 16 2 2
SQL>
Въпреки това остава добра практика да се уточнят мащаб и точност, когато е възможно, особено когато имаме работа с цели числа, да речем, или пари.