質問

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

役に立ちましたか?

解決

は、データベース・テーブルのカラムの話をしている場合は、それが必要条件によって許容最小長さにVARCHAR2の最大長を設定することをお勧めします - 他の制約のように、それはこれらの作り付けの機能を使用することができます唯一の有効なデータを確実にするために、データベースが保存されます(例:1000の文字と姓が入力された場合、私は間違っていること、そしておそらくどこかのプログラムのバグを強調することをかなり確信している)。

PL / SQL側では、それはあなたがあなたのPL / SQLプログラムの中で、あなたの文字列を宣言するもののサイズによってはメモリ(PGA)用法の違いがあるかもしれないことを知っているあなたに興味があります。内部的には、PL / SQLエンジンは、2つの異なるメモリ割り当て方式を切り替える2000バイトに閾値があります。例えば次の宣言ます:

DECLARE v VARCHAR2(2000); BEGIN...

一方、ユーザの記憶領域に2000のバイトを割り当てます。

DECLARE v VARCHAR2(2001); BEGIN...

の値が割り当てられている場合にのみメモリを割り当てるであろう、それに割り当てられた値を保持するために必要とされるだけのような多くのメモリを割り当てます。

Oracleのフォーラム: "VARCHAR2スペース割り当て"

他のヒント

ただ、可変長配列を使用し、ネストされたテーブルを使用しないでください。ネストした表は、要素のarbitry番号を保持することができます。

それが必要とされていない場合、Oracleは、このスペースを主張しないので、

の代わりにテーブル定義のVARCHAR2(20)の使用VARCHAR2(4000)は本当に傷つけることはありません。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top