UNFREEZE PLANS (SQL)
構文
UNFREEZE PLANS [[FROM] UPGRADE] BY ID statement-hash
UNFREEZE PLANS [[FROM] UPGRADE] BY TABLE table-name
UNFREEZE PLANS [[FROM] UPGRADE] BY SCHEMA schema-name
UNFREEZE PLANS [[FROM] UPGRADE]
説明
UNFREEZE PLANS コマンドは、凍結したクエリ・プランを凍結解除します。クエリ・プランを凍結するには、FREEZE PLANS コマンドを使用します。
FROM UPGRADE 節を指定せずに UNFREEZE PLANS を使用すると、プランの状態が凍結/明示のすべてのクエリ・プランが凍結解除されます。FROM UPGRADE 節を指定して UNFREEZE PLANS を使用すると、プランの状態が凍結/アップグレードのすべてのクエリ・プランが凍結解除されます。この節の FROM キーワードはオプションです。
UNFREEZE PLANS には、クエリ・プランを凍結解除するための 4 つの構文形式が用意されています。
-
指定されたクエリ・プラン : UNFREEZE PLANS BY ID statement-hash。statement-hash 値は、二重引用符で区切る必要があります。
-
テーブルのすべてのクエリ・プラン : UNFREEZE PLANS BY TABLE table-name。テーブル名またはビュー名を指定できます。クエリ・プランが複数のテーブルまたはビューを参照する場合、これらのテーブルまたはビューのいずれかを指定すると、クエリ・プランは凍結解除されます。
-
スキーマ内のすべてのテーブルのすべてのクエリ・プラン : UNFREEZE PLANS BY SCHEMA schema-name。
-
現在のネームスペースのすべてのテーブルのすべてのクエリ・プラン : UNFREEZE PLANS。
このコマンドは、1 つ以上のクエリ・プランが凍結解除される場合は SQLCODE 0 を発行し、クエリ・プランが凍結解除されない場合は SQLCODE 100 を発行します。影響を受けた行 (%ROWCOUNT) は、凍結解除されたクエリ・プランの数を示します。
その他のインタフェース
次の $SYSTEM.SQL.Statement メソッドを使用して 1 つのクエリ・プランまたは複数のクエリ・プランを凍結解除できます : 1 つのプランの場合は UnfreezeStatement()Opens in a new tab、関係のすべてのプラン (クエリ・プランで参照されるテーブルまたはビュー) の場合は UnfreezeRelation()Opens in a new tab、スキーマのすべてのプランの場合は UnfreezeSchema()Opens in a new tab、現在のネームスペースのすべてのプランの場合は UnfreezeAll()Opens in a new tab。対応する Freeze メソッドがあります。
管理ポータルを使用して、クエリ・プランを凍結解除できます。詳細は、"凍結プランのインタフェース" を参照してください。
引数
statement-hash
引用符で囲まれた、クエリ・プランの SQL 文の定義の内部ハッシュ表現。場合によっては、同じ SQL 文のように見えても、文のハッシュ・エントリが異なることがあります。SQL 文の異なるコード生成を必要とする設定/オプションの相違によって、異なる文ハッシュが生成されます。これは、異なる内部最適化をサポートする異なるクライアント・バージョンや異なるプラットフォームで発生することがあります。"SQL 文の詳細" を参照してください。
table-name
既存のテーブルまたはビューの名前。table-name は修飾 (schema.table)、未修飾 (table) のどちらでもかまいません。テーブル名が未修飾の場合は、既定のスキーマ名が使用されます。
schema-name
既存のスキーマの名前。このコマンドは、指定されたスキーマ内のすべてのテーブルの、凍結されたすべてのクエリ・プランを凍結解除します。
セキュリティおよび特権
UNFREEZE PLANS コマンドは、ユーザに %Development:USE 権限が必要な特権操作です。このような権限は管理ポータルを介して付与できます。この特権なしで UNFREEZE PLANS コマンドを実行すると、SQLCODE -99 エラーが発生し、コマンドは失敗します。以下の 2 つの例外があります。
-
埋め込み SQL を介してコマンドが実行され、特権チェックを実行しない。
-
ユーザが特権チェックなしを明示的に指定する (例えば、checkPriv 引数を 0 に設定して %Prepare() を呼び出したり、%SQL.StatementOpens in a new tab で %ExecDirectNoPriv() を呼び出したりすることによって指定)。
関連項目
-
FREEZE PLANS コマンド