天天看點

第四十四章 SQL指令 FREEZE PLANS

文章目錄

  • 第四十四章 SQL指令 FREEZE PLANS
  • ​​大綱​​
  • 參數
  • ​​描述​​
  • 其他接口

當機查詢計劃。

大綱

FREEZE PLANS BY ID statement-hash

FREEZE PLANS BY TABLE table-name

FREEZE PLANS BY SCHEMA schema-name

FREEZE PLANS
      

  • ​statement-hash​

    ​ - 查詢計劃的SQL語句定義的内部哈希表示,用引号括起來。

    偶爾,看起來相同的SQL語句可能有不同的語句散列項。

    需要SQL語句的不同代碼生成的設定/選項的任何差異都會導緻不同的語句散列。

    這種情況可能發生在支援不同内部優化的不同客戶機版本或不同平台上。

  • ​table-name​

    ​ - 現有表或視圖的名稱。

    表名可以是限定的(​

    ​schema.table​

    ​),也可以是非限定的(​

    ​table​

    ​)。

    非限定表名接受預設模式名。

  • ​schema-name​

    ​ - 現有模式的名稱。

    該指令當機指定模式中所有表的所有查詢計劃。

描述

​FREEZE PLANS​

​指令用來當機查詢計劃。

需要解凍已當機的查詢計劃,使用​

​unfreeze plans​

​指令。

“當機計劃”可以當機“計劃狀态”為“未當機”的查詢計劃。

它不能當機計劃狀态為“​

​Unfrozen/Parallel​

​”的查詢計劃。

​FREEZE PLANS​

​為當機查詢計劃提供了四種文法形式:

  • 指定的查詢計劃:​

    ​FREEZE PLANS BY ID​

    ​語句哈希。

    語句哈希值必須用雙引号分隔。

  • 表的所有查詢計劃:​

    ​FREEZE plans BY table table​

    ​表名。

    可以指定表名或視圖名。

    如果一個查詢計劃引用多個表和/或視圖,指定其中任何一個表或視圖都會當機查詢計劃。

  • 模式中所有表的所有查詢計劃:​

    ​FREEZE plans BY schema schema-name​

    ​。
  • 目前命名空間中所有表的所有查詢計劃:​

    ​FREEZE plans​

如果一個或多個查詢計劃被當機,該指令将發出​

​SQLCODE 0​

​;

如果沒有當機查詢計劃,則發出​

​SQLCODE 100​

受影響的行數(​

​%ROWCOUNT​

​)表示被當機的查詢計劃數量。

可以使用下面的​

​$SYSTEM.SQL​

語句方法用于當機單個查詢計劃或多個查詢計劃:用于單個計劃的​

​freezstatement ()​

​FreezeRelation()​

​用于一個關系的所有計劃(查詢計劃中引用的表或視圖);

​FreezeSchema()​

​用于一個模式的所有計劃;

​FreezeAll()​

​用于目前名稱空間中的所有計劃。