Click here to view and discuss this page in DocCommentXchange. In the future, you will be sent there automatically.

SQL Anywhere 11.0.1 (日本語) » SQL Anywhere サーバ - SQL の使用法 » データベースの作成 » データベース・オブジェクトの使用

 

テンポラリ・テーブルの操作

テンポラリ・テーブルはテンポラリ・ファイルに格納されます。他の DB 領域のページと同様に、テンポラリ・ファイルのページはキャッシュできます。テンポラリ・テーブルに対する操作はトランザクション・ログに書き込まれません。テンポラリ・テーブルには「ローカル・テンポラリ」テーブルと「グローバル・テンポラリ」テーブルの 2 種類があります。

参照
ローカル・テンポラリ・テーブル

ローカル・テンポラリ・テーブルは、接続の間だけ、または複合文内で定義されている場合はその複合文が使われている間だけしか存在しません。

グローバル・テンポラリ・テーブルは、DROP TABLE 文を使用して明示的に削除しないかぎり、データベース内に残ります。「グローバル」という語は、同じまたは異なるアプリケーションからの複数の接続が同時にテーブルを使用できるという意味です。グローバル・テンポラリ・テーブルの特性は次のとおりです。

  • テーブルの定義はカタログに記録され、テーブルが明示的に削除されるまで保持される。

  • テーブルでの挿入、更新、削除は、トランザクション・ログに記録されない。

  • テーブルのカラム統計は、データベース・サーバによってメモリ内に保持される。

グローバル・テンポラリ・テーブル

グローバル・テンポラリ・テーブルには「非共有」「共有」の 2 種類があります。通常、グローバル・テンポラリ・テーブルは非共有です。つまり、各接続はテーブル内で各自のローしか認識しません。接続が終了すると、その接続のローはテーブルから削除されます。

グローバル・テンポラリ・テーブルが共有されると、テーブルのすべてのデータがすべての接続で共有されます。共有されたグローバル・テンポラリ・テーブルを作成するには、テーブルの作成時に SHARE BY ALL 句を指定します。共有されたグローバル・テンポラリ・テーブルには、グローバル・テンポラリ・テーブルの一般的な特性だけでなく、次の特性が適用されます。

  • 明示的に削除されるまで、またはデータベースが停止するまで、テーブルのコンテンツは持続する。

  • データベースの起動時、テーブルは空である。

  • テーブルでのローのロック処理動作は、ベース・テーブルの場合と同じである。

非トランザクション指向のテンポラリ・テーブル

テンポラリ・テーブルを非トランザクション指向として宣言するには、CREATE TABLE 文の NOT TRANSACTIONAL 句を使用します。状況によっては、NOT TRANSACTIONAL 句を使用するとパフォーマンスが向上します。これは、トランザクション単位でないテンポラリ・テーブルでの操作では、ロールバック・ログにエントリが作成されないためです。たとえば、テンポラリ・テーブルを使用するプロシージャが COMMIT や ROLLBACK の介入を受けずに繰り返し呼び出される場合や、テーブルに多くのローが含まれる場合は、NOT TRANSACTIONAL が有用です。非トランザクション指向テンポラリ・テーブルへの変更は、COMMIT または ROLLBACK の影響を受けません。


テンポラリ・テーブルの作成
プロシージャ内でのテンポラリ・テーブルの参照