CACHE ステートメント
キャッシュが有効な場合、CACHE ステートメントを使用すると、キャッシュ対象のデータとキャッシュ先のテーブルを制御することができます。CACHE ステートメントでは、指定されたSELECT ステートメントが実行され、その結果がキャッシュデータベース内の同じ名前のテーブルまたは<cached_table_name> で指定されたテーブルにキャッシュされます。本製品 では、キャッシュ内に行が存在すれば更新され、存在しなければ行が挿入されます。このため、選択するカラムには、既存の行の識別に使用される主キーが含まれている必要があります。
さまざまなキャッシュストラテジーについての詳細は、データのキャッシュ を参照してください。
CACHE ステートメント構文
CACHE ステートメントには、その動作を変更する次のオプションを含めることができます。
CACHE [ <cached_table_name> ] [ WITH TRUNCATE | AUTOCOMMIT | SCHEMA ONLY | DROP EXISTING | ALTER SCHEMA ] <select_statement>
WITH TRUNCATE
WITH TRUNCATE オプションを設定すると、本製品 は選択した行が追加される前に、キャッシュテーブルから既存の行を削除します。このオプションは、キャッシュテーブル全体をリフレッシュし、既存のスキーマは維持する場合に使用します。
AUTOCOMMIT
AUTOCOMMIT オプションを設定すると、本製品 は各行を個別にコミットします。このオプションは、何らかの理由でキャッシュできなかった行を無視する場合に使用します。デフォルトでは、結果セット全体が1つのトランザクションとしてキャッシュされます。
DROP EXISTING
DROP EXISTING オプションを設定すると、本製品 は新しい結果がキャッシュされる前に、既存のキャッシュテーブルを削除します。このオプションは、キャッシュテーブル全体をスキーマを含めてリフレッシュする場合に使用します。
SCHEMA ONLY
SCHEMA ONLY オプションを設定すると、本製品 はキャッシュテーブルをSELECT ステートメントに基づいて作成しますが、クエリは実行されません。
ALTER SCHEMA
ALTER SCHEMA オプションを設定すると、本製品 はキャッシュ内にある既存のテーブルのスキーマがSELECT ステートメントのスキーマと一致しない場合に、そのスキーマを変更します。このオプションを指定すると、キャッシュテーブルとSELECT ステートメントのスキーマが一致しない場合に、新しいカラムが作成されるか、カラムが削除されます。
一般的なクエリ
次のCACHE ステートメントを使用すると、テーブルのすべての行がキャッシュされます。
CACHE SELECT * FROM Test_xlsx_Sheet1
次のCACHE ステートメントを使用すると、テーブルのすべての行がキャッシュテーブルCachedTest_xlsx_Sheet1 にキャッシュされます。
CACHE CachedTest_xlsx_Sheet1 SELECT * FROM Test_xlsx_Sheet1
次のCACHE ステートメントを使用すると、インクリメンタルキャッシュが行われます。DateModified カラムは、すべてのテーブルに存在するわけではありません。キャッシュステートメントは、DateModified カラムがある場合に、インクリメンタルキャッシュがどのように実行されるかを示しています。また、この場合、WITH TRUNCATE およびDROP EXISTING オプションは特に除外されているため、既存の行がすべて削除されます。
CACHE CachedTest_xlsx_Sheet1 SELECT * FROM Test_xlsx_Sheet1 WHERE DateModified > '2013-04-04'
次のCACHE ステートメントは、使用可能なカラムをすべて含むテーブルを作成し、その後いくつかのカラムのみをキャッシュする場合に使用します。一連のステートメントでは、キャッシュテーブルCachedTest_xlsx_Sheet1 にTest_xlsx_Sheet1 内のカラムがすべて含まれている場合でも、Id とColumn1 のみがキャッシュされます。
CACHE CachedTest_xlsx_Sheet1 SCHEMA ONLY SELECT * FROM Test_xlsx_Sheet1 CACHE CachedTest_xlsx_Sheet1 SELECT Id, Column1 FROM Test_xlsx_Sheet1