0

VARCHARまたはVARRAYの最大整数サイズを実際に必要な値よりも大幅に大きい値に設定する(または許可される最大サイズに設定する)ことには、(値または配列が大きくなりすぎることを除いて)欠点がありますか?

4

2 に答える 2

2

データベーステーブルの列について話している場合は、VARCHAR2の最大長を要件で許容される最小長に設定することをお勧めします。他の制約と同様に、データベースのこれらの組み込み機能を使用して、有効なデータのみが保存されます(たとえば、1000文字の名前が入力された場合、それは間違いであり、プログラムのどこかにあるバグを強調する可能性があります)。

PL / SQL側では、PL / SQLプログラムで文字列を宣言するサイズによって、メモリ(PGA)の使用量に違いがある可能性があることを知っておくとよいでしょう。内部的には、2000バイトにしきい値があり、PL/SQLエンジンが2つの異なるメモリ割り当て方式を切り替えます。例:次の宣言:

DECLARE v VARCHAR2(2000); BEGIN...

ユーザーのメモリ領域に2000バイトを割り当てますが、次のようになります。

DECLARE v VARCHAR2(2001); BEGIN...

値が割り当てられたときにのみメモリを割り当て、割り当てられた値を保持するために必要な量のメモリのみを割り当てます。

Oracleフォーラム:「VARCHAR2スペース割り当て」

于 2009-07-02T12:53:55.160 に答える
0

varrayを使用せず、ネストされたテーブルを使用してください。ネストされたテーブルは、任意の数の要素を保持できます。

テーブル定義でvarchar2(20)の代わりにvarchar2(4000)を使用しても、Oracleは必要のないときにこのスペースを要求しないため、実際には問題はありません。

于 2009-07-01T18:31:29.007 に答える