sql >> データベース >  >> RDS >> Oracle

より長いVARCHAR2列を定義することの影響

    答えは、データベーステーブルの列について話しているのか、PL/SQLプログラムの変数について話しているのかによって異なります。

    データベース列

    使用されるストレージの量は、保存されるデータのサイズに比例します。

    PL/SQL変数

    変数が1〜4000(11g +)/ 1999(10g以前)のサイズで宣言されている場合、メモリは最大長に割り当てられます(つまり、VARCHAR2(100)には少なくとも100バイトのメモリが必要です)。

    変数が4001(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バイトを占めます。

    11gのリファレンス:PL/SQLコードでのメモリオーバーヘッドの回避

    もっとのサイズを指定します VARCHAR2変数の場合は4000文字を超えます。 PL / SQLは、変数を割り当てるまで待機してから、必要なだけのストレージを割り当てます



    1. インクリメンタル統計は、クエリオプティマイザでは使用されません

    2. 不正な整数(2147483647)がMySQLに挿入されていますか?

    3. Oracleで文字列内の単語数をカウントするにはどうすればよいですか?

    4. MySQLでテーブルを作成する