postgresql PREPARE 用法

來源:互聯網
上載者:User
Name

PREPARE -- 建立一個準備好的查詢

Synopsis

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

PREPARE 建立一個已準備好的查詢。 一個已準備好的查詢是伺服器端的對象,可以用於最佳化效能。 在執行 PREPARE 語句的時候,指定的查詢被分析,重寫以及規劃。 當隨後發出 EXECUTE 語句的時候, 已準備好的查詢就只需要執行了。因此,分析,重寫,以及規劃階段都只執行一次,而不是每次查詢執行的時候都要執行一次。

準備好的查詢可以接受參數:在它執行的時候替換到查詢中的數值。 要給一個準備好的查詢聲明參數,我們需要在 PREPARE 語句裡包含一個資料類型的列表。在查詢本身裡,你可以按照位置來引用這些參數, 比如 $1,$2,等。 在執行查詢的時候,在 EXECUTE 語句裡為這些參數聲明實際的數值。
參考 EXECUTE 擷取更多資訊。

準備好的查詢是在本機存放區的(在當前後端裡),並且只是在當前資料庫會話的過程中存在。 如果用戶端退出,那麼準備好的查詢就會被遺忘,因此我們必須在被重新使用之前重新建立。 這也意味著一個準備好的查詢不能被多個同時的資料庫用戶端使用; 但是,每個用戶端可以建立它們自己的已準備好的查詢來使用。已準備好的語句可以用DEALLOCATE 命令手工清除。

如果一個會話準備用於執行大量類似的查詢,那麼已準備好的查詢可以獲得最大限度的效能優勢。 如果查詢非常複雜,需要複雜的規劃或者重寫,那麼效能差距將非常明顯。 比如,如果查詢設計許多表的串連,或者有多種規則要求應用。如果查詢的規劃和重寫相對簡單, 而執行起來開銷相當大,那麼已準備好的查詢的效能優勢就不那麼明顯。

 

參數

plan_name

給予這個特定的已準備好查詢的任意名字。它必須在一個會話中是唯一的, 並且用於執行或者刪除一個前面準備好的查詢。

datatype

已準備好查詢的某個參數的資料類型。要在已準備好查詢內部引用這個參數,使用 $1,$2,等。

statement

任何 SELECT,INSERT,UPDATE, 或者 DELETE 查詢。

注意

在一些情況下,PostgreSQL 為一個已準備好的查詢產生的查詢規劃可能還不如按照普通方法提交並執行的查詢產生的規劃好。 這是因為該查詢在被規劃的時候(也是最佳化器視圖判斷最優查詢規劃的時候), 在查詢中聲明的任何參數的實際數值都還不可見。 PostgreSQL 在表中收集資料分布的統計,
而且可以利用查詢中的常量來猜測執行查詢的可能結果。 因為這些資料在準備哪種帶參數的查詢的規劃的時候還不可得, 所以,選出來得規劃可能是次好的。 要檢查 PostgreSQL 為已準備好的查詢選取的查詢計劃, 使用 EXPLAIN

有關查詢規劃和 PostgreSQL 為查詢最佳化的目的收集的統計的更多資訊, 參閱 ANALYZE 文檔。

例子

為一個 INSERT 語句建立一個準備好查詢然後執行它:

 

PREPARE fooplan (int, text, bool, numeric) AS    INSERT INTO foo VALUES($1, $2, $3, $4);EXECUTE fooplan(1, 'Hunter Valley', 't', 200.00);

為一個 SELECT
語句建立一個執行好的查詢然後執行它:

PREPARE usrrptplan (int, date) AS    SELECT * FROM users u, logs l WHERE u.usrid=$1 AND u.usrid=l.usrid    AND l.date = $2;EXECUTE usrrptplan(1, current_date);


 

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.