Provided by: manpages-zh_1.5-1_all bug

NAME

       PREPARE - 創建一虓n的查詢

SYNOPSIS

       PREPARE plan_name [ (datatype [, ...] ) ] AS statement

DESCRIPTIONyz
       PREPARE                   創建一茪w準備好的查詢。                   一-
       茪w準備好的查詢是伺服器端的對象,可以用於優化性能。   在執行    PREPARE
       語句的時唌A指定的查詢被分析,姨g以及規劃。 當隨後發出 EXECUTE 語句的時-
       唌A                          已準備好的查詢就只需n執行了。因此,分析,-
       姨g,以及規劃階段都只執行一次,而不是每次查詢執行的時堀τ執行一次。

        準備好的查詢可以接受參數:在它執行的時埭懂咧鴐d詢中的數C      n給一-
       虓n的查詢聲明參數,我抳愯在          PREPARE          語句裏包含一-
       蚍矞型的列表。在查詢本卹堙A你可以按照位置來引用這些參數,       比如
       $1,$2,等。 在執行查詢的時唌A在 EXECUTE  語句裏為這些參數聲明實際的數-
       C 參考 EXECUTE [execute(7)] 獲取更多信息。

        準備好的查詢是在本地存儲的(在當前後端裏),並且只是在當前數據庫會話的過程中存在。
       如果客戶端退出,那麼準備好的查詢就會被遺忘,因此我怚眸椰b被奐s使用之前-
       奐s創建。    這也意味著一虓n的查詢不能被多茼P時的數據庫客戶端使用;
       但是,每茷廕搘i以創建它怞菑v的已準備好的查詢來使用。

        如果一虓|話準備用於執行大量類似的查詢,那麼已準備好的查詢可以獲得最大-
       度的性能優勢。                     如果查詢非常復雜,需n復雜的規劃或者-
       姨g,那麼性能差距將非常明顯。                         比如,如果查詢設-
       p許多表的連接,或者有多種規則n求應用。如果查詢的規劃和姨g相對簡單,
       而執行起來開銷相當大,那麼已準備好的查詢的性能優勢就不那麼明顯。

PARAMETERS數
       plan_name
               給予這荅S定的已準備好查詢的任意名字。它必須在一-
              虓|話中是唯一的, 並且用於執行或者刪除一茷e捧n的查詢。

       datatype
               已準備好查詢的某荌捊獐矞型。n在已準備好查詢內部引用這-
              荌捊A使用 $1,$2,等。

       statement
               任何 SELECT, INSERT, UPDATE, 或 DELETE 語句。

NOTES`N
        在一些情況下,PostgreSQL                                         為一-
       茪w準備好的查詢生成的查詢規劃可能還不如按照普通方法提交並執行的查詢生成的規劃好。
       這是因為該查詢在被規劃的時唌]也是優化器視圖判斷最優查詢規劃的時唌^,
       在查詢中聲明的任何參數的實際數暀ㄔi見。                  PostgreSQL
       在表中收集數據分布的統p,
       而且可以利用查詢中的常量來猜測執行查詢的可能結果。  因為這些數據在準備-
       種帶參數的查詢的規劃的時埡暀ㄔi得,   所以,選出來得規劃可能是次好的。
       n檢查  PostgreSQL 為已準備好的查詢選取的查詢p劃, 使用  EXPLAIN EXECUTE
       。

        有關查詢規劃和 PostgreSQL  為查詢優化的目的收集的統p的更多信息,  參閱
       ANALYZE [analyze(7)] 文件。

COMPATIBILITYe性
        SQL     標準包含一     PREPARE    語句,    但是它只用於嵌入的    SQL
       客戶端。PostgreSQL 實現的 PREPARE 語句的語法也略有不同。

者
       Postgresql  <laser@pgsqldb.org>