web-dev-qa-db-ja.com

標準テーブルとハッシュテーブルAbapの違い

「標準のテーブル」、「ハッシュテーブル」、または単に「のテーブル」の使用の違いについて明確に説明してください。また、「初期サイズ0」の意味は何ですか?

参考までに、以下のコードをご覧ください。

it_c01_d006_raw TYPE STANDARD TABLE OF /bic/ac01_d00600
                       INITIAL SIZE 0,
it_c01_d006     TYPE HASHED TABLE OF /bic/ac01_d00600
                       WITH UNIQUE KEY /bic/cemployee /bic/cdatetype,
it_c01_d002     TYPE TABLE OF /bic/ac01_d00200.
9
Siva

TYPE STANDARD TABLE OFTYPE TABLE OFの意味はまったく同じであり、他に何も指定されていない場合はSTANDARDが暗示されます。ただし、オブジェクト指向コンテキストでは、内部テーブルを完全に宣言することが期待されており、STANDARDの追加を省略できません。この場合、テーブルインデックスごとに読み取るか、テーブルを手動で並べ替えた場合はキーでアクセスできるのは、在庫標準の内部テーブルです。

TYPE HASHED TABLEのテーブルは、内部HASHアルゴリズムを使用して表される内部テーブルを作成し、コストが(概算で)テーブルのサイズに依存しないテーブルへの読み取りを可能にします。このタイプのテーブルを使用すると、読み取りが多く、書き込みが比較的少ない大きなデータセットがある場合に適しています。 HASHアルゴリズムはこれに依存しているため、ハッシュテーブルを宣言するときは、UNIQUE KEYも宣言する必要があります。

INITIAL SIZE 0もコードの冗長な使用法です。これは、メモリ割り当てが設定されたブロックで発生することを意味します。 (このサイズが事前定義されているか、BASISによって構成可能かどうかはわかりません)が、初期サイズ0がデフォルトです。内部テーブルの行数の10倍のセットでメモリ割り当てを実行する場合は、「INITIAL SIZE 10」を使用しますが、ほとんどの場合、デフォルトのメモリ割り当てをそのままにしておく方が、強制するよりも優れています。

さらに

TYPE SORTED TABLEのテーブルは、UNIQUEまたはNON-UNIQUEキーのいずれかで宣言できます。レコードの読み取りコストは、BINARY SEARCHを許可するため、STANDARDテーブルのコストよりも低くなりますが、HASHEDテーブルのコストよりも高くなります。書き込みコストは、STANDARDテーブルよりもわずかに高くなりますが、HASHEDテーブルよりも低くなります。

19
Esti

標準テーブル

これは、インデックスを使用して個々のテーブルエントリをアドレス指定する場合に最も適切なタイプです。インデックスアクセスは、可能な限り最速のアクセスです。行を追加して標準テーブルに入力し(ABAP APPENDステートメント)、インデックスを指定してエントリを読み取り、変更、および削除する必要があります(関連するABAPコマンドのINDEXオプション)。標準テーブルのアクセス時間は、テーブルエントリの数に比例して増加します。キーアクセスが必要な場合、テーブルに個別の手順で入力して処理できると、標準テーブルが特に役立ちます。たとえば、エントリを追加してテーブルに入力し、並べ替えることができます。キーアクセスでバイナリ検索オプションを使用する場合、応答時間はテーブルエントリの数に対数的に比例します。

ハッシュテーブル

これは、主な操作がキーアクセスであるテーブルに最も適したタイプです。インデックスを使用してハッシュテーブルにアクセスすることはできません。キーアクセスの応答時間は、テーブルエントリの数に関係なく一定のままです。データベーステーブルと同様に、ハッシュテーブルには常に一意のキーがあります。ハッシュテーブルは、データベーステーブルに似た内部テーブルを作成して使用する場合、または大量のデータを処理する場合に役立ちます。manu

7
Dhivya