PostgreSQL の PREPARE

いきなり PREPARE と書いても 知らない人は「何それ?」となると思います。 PREPARE は PostgreSQL において SQL 文の予約をしてくれるメソッドです。 SQL 文の一時的な関数化と考えても良いかもしれません。

実際の使い方ですが、次のように宣言します。

db=# PREPARE sql_1 AS SELECT tablename from pg_tables;

PREPARE

これで sql_1 という名前で登録できました。

予約した SQL 文を実行するには EXECUTE を使用します。

db=# EXECUTE sql_1;

        tablename
-------------------------
 sql_features
 sql_implementation_info
 sql_languages
 sql_packages
 sql_sizing
 sql_sizing_profiles

PREPARE には SELECT,INSERT,UPDATE,DELETE が使用できて 接続が切れるまで有効です。

SQL 文中の値を引数で変えることもできます。

db=# PREPARE sql_2 (varchar) AS SELECT tablename
db-# from pg_tables
db-# where tablename = $1;

PREPARE

引数は 1つめから順番に 変数 $1,$2,$3... で受けます。

EXECUTE で実行するときに値を指定します。

db=# EXECUTE sql_2('pg_index');

 tablename
-----------
 pg_index
(1 row)

大きなメリットとして EXECUTE したときに実行計画などの準備をしないため ( PREPARE したときに準備されます) 同じ SQL 文を何度も使用する場合、速度が上がります。

Google サイト内検索

Amazonアソシエイト