Pet*_*ang 24 sql oracle varchar2
当值不超过10字节时VARCHAR2(1000),VARCHAR2(10)使用Oracle 而不是Oracle 定义列有什么影响?
该列是否仅占用存储值所需的空间,还是会对表空间/索引的大小/性能产生负面影响?
Jef*_*emp 21
答案取决于您是在谈论数据库表中的列,还是PL/SQL程序中的变量.
数据库专栏
使用的存储量与存储的数据大小成比例.
PL/SQL变量
如果声明变量的大小为1到3999(11g +)/ 1999(10g或更早),则将为最大长度分配内存(即VARCHAR2(100)将需要至少100个字节的内存).
如果声明变量的大小为4000(11g +)/ 2000(10g或更早)或更大,则将根据存储的数据大小分配内存.(一个有趣的问题是,如果变量的值被更改,内存如何调整大小 - 是否重新分配具有新大小的另一个缓冲区?)
参考10g:PL/SQL数据类型
小VARCHAR2变量针对性能进行了优化,而较大的变量针对高效内存使用进行了优化.截止点是2000字节.对于2000字节或更长的VARCHAR2,PL/SQL动态分配足够的内存来保存实际值.对于短于2000字节的VARCHAR2变量,PL/SQL预先分配变量的完整声明长度.例如,如果将相同的500字节值分配给VARCHAR2(2000 BYTE)变量和VARCHAR2(1999 BYTE)变量,则前者占用500个字节,后者占用1999个字节.
Qua*_*noi 13
在数据库中,没有区别.VARCHAR2存储长度可变,声明的长度只是一个限制.
但是,某些客户端应用程序将保留1000每列的字节数,而不是10如果他们看到列被定义为VARCHAR2(1000)
| 归档时间: |
|
| 查看次数: |
17289 次 |
| 最近记录: |