![]() |
1
20
答案取决于您所说的是数据库表中的列,还是pl/sql程序中的变量。 数据库列 使用的存储量与存储的数据大小成比例。 PL/SQL变量 如果变量声明的大小为1到4000(11g+)/1999(10g或更早),则将为最大长度分配内存(即varchar2(100)需要至少100字节的内存)。 如果变量声明的大小为4001(11g+)/2000(10g或更早)或更大,则将根据存储的数据大小分配内存。(一个有趣的问题是,如果变量的值发生了变化,那么内存的大小是如何调整的——它是否用新的大小重新分配了另一个缓冲区?) 10g参考: PL/SQL Datatypes
11g参考: Avoiding Memory Overhead in PL/SQL Code
|
![]() |
2
13
在数据库中,没有区别。
但是,一些客户端应用程序将保留
|
![]() |
3
1
将列大小定义为准备处理的最大长度。 对于将文件加载到数据库中的临时表,我可以使用varchar2(4000)。然后,一旦所有数据都在数据库中,我就可以做我需要做的任何验证(数据类型、数据长度、最小/最大值、可接受字符…),并将有效值传递到具有适当定义/约束的列中。 我可以利用 DML error logging 这样,不符合定义/约束的数据就被抽取到拒绝表中,而不需要进行任何复杂的逐行编码。 如果你有一个varchar2(1000),那么在某个时刻你会得到比你期望的长的数据(例如你可能得到一个10个字符的字符串,但是它有14个字节,因为有些字符是多字节字符集的值)。 |
![]() |
Community wiki · SQL语法新手 1 年前 |
![]() |
KateMak · 是否将多行中的多列与唯一id组合? 1 年前 |
![]() |
Karuna · SQL中列内的筛选器[重复] 1 年前 |
![]() |
Irvan Affandy · 为另一个选择选择声明的键 1 年前 |
![]() |
Community wiki · 这个MySQL语句出了什么问题? 1 年前 |
![]() |
Community wiki · 优化从同一表中提取的多列的查询 1 年前 |