Man page - prepare(7)
Manual
PREPARE
NAMESYNOPSIS
DESCRIPTION 描 述
PARAMETERS 参 数
NOTES 注 意
COMPATIBILITY 兼 容 性
译 者
跋
NAME
PREPARE - 创 建 一 个 准 备 好 的 查 询
SYNOPSIS
PREPARE plan_name [ ( datatype [, ...] ) ] AS statement
DESCRIPTION 描 述
PREPARE 创 建 一 个 已 准 备 好 的 查 询 。 一 个 已 准 备 好 的 查 询 是 服 务 器 端 的 对 象 , 可 以 用 于 优 化 性 能 。 在 执 行 PREPARE 语 句 的 时 候 , 指 定 的 查 询 被 分 析 , 重 写 以 及 规 划 。 当 随 后 发 出 EXECUTE 语 句 的 时 候 , 已 准 备 好 的 查 询 就 只 需 要 执 行 了 。 因 此 , 分 析 , 重 写 , 以 及 规 划 阶 段 都 只 执 行 一 次 , 而 不 是 每 次 查 询 执 行 的 时 候 都 要 执 行 一 次 。
准 备 好 的 查 询 可 以 接 受 参 数 : 在 它 执 行 的 时 候 替 换 到 查 询 中 的 数 值 。 要 给 一 个 准 备 好 的 查 询 声 明 参 数 , 我 们 需 要 在 PREPARE 语 句 里 包 含 一 个 数 据 类 型 的 列 表 。 在 查 询 本 身 里 , 你 可 以 按 照 位 置 来 引 用 这 些 参 数 , 比 如 $1, $2, 等 。 在 执 行 查 询 的 时 候 , 在 EXECUTE 语 句 里 为 这 些 参 数 声 明 实 际 的 数 值 。 参 考 EXECUTE [ execute (7)] 获 取 更 多 信 息 。
准 备 好 的 查 询 是 在 本 地 存 储 的 ( 在 当 前 后 端 里 ) , 并 且 只 是 在 当 前 数 据 库 会 话 的 过 程 中 存 在 。 如 果 客 户 端 退 出 , 那 么 准 备 好 的 查 询 就 会 被 遗 忘 , 因 此 我 们 必 须 在 被 重 新 使 用 之 前 重 新 创 建 。 这 也 意 味 着 一 个 准 备 好 的 查 询 不 能 被 多 个 同 时 的 数 据 库 客 户 端 使 用 ; 但 是 , 每 个 客 户 端 可 以 创 建 它 们 自 己 的 已 准 备 好 的 查 询 来 使 用 。
如 果 一 个 会 话 准 备 用 于 执 行 大 量 类 似 的 查 询 , 那 么 已 准 备 好 的 查 询 可 以 获 得 最 大 限 度 的 性 能 优 势 。 如 果 查 询 非 常 复 杂 , 需 要 复 杂 的 规 划 或 者 重 写 , 那 么 性 能 差 距 将 非 常 明 显 。 比 如 , 如 果 查 询 设 计 许 多 表 的 连 接 , 或 者 有 多 种 规 则 要 求 应 用 。 如 果 查 询 的 规 划 和 重 写 相 对 简 单 , 而 执 行 起 来 开 销 相 当 大 , 那 么 已 准 备 好 的 查 询 的 性 能 优 势 就 不 那 么 明 显 。
PARAMETERS 参 数
plan_name
给 予 这 个 特 定 的 已 准 备 好 查 询 的 任 意 名 字 。 它 必 须 在 一 个 会 话 中 是 唯 一 的 , 并 且 用 于 执 行 或 者 删 除 一 个 前 面 准 备 好 的 查 询 。
datatype
已 准 备 好 查 询 的 某 个 参 数 的 数 据 类 型 。 要 在 已 准 备 好 查 询 内 部 引 用 这 个 参 数 , 使 用 $1, $2, 等 。
statement
任 何 SELECT , INSERT , UPDATE , 或 DELETE 语 句 。
NOTES 注 意
在 一 些 情 况 下 , PostgreSQL 为 一 个 已 准 备 好 的 查 询 生 成 的 查 询 规 划 可 能 还 不 如 按 照 普 通 方 法 提 交 并 执 行 的 查 询 生 成 的 规 划 好 。 这 是 因 为 该 查 询 在 被 规 划 的 时 候 ( 也 是 优 化 器 视 图 判 断 最 优 查 询 规 划 的 时 候 ) , 在 查 询 中 声 明 的 任 何 参 数 的 实 际 数 值 都 还 不 可 见 。 PostgreSQL 在 表 中 收 集 数 据 分 布 的 统 计 , 而 且 可 以 利 用 查 询 中 的 常 量 来 猜 测 执 行 查 询 的 可 能 结 果 。 因 为 这 些 数 据 在 准 备 哪 种 带 参 数 的 查 询 的 规 划 的 时 候 还 不 可 得 , 所 以 , 选 出 来 得 规 划 可 能 是 次 好 的 。 要 检 查 PostgreSQL 为 已 准 备 好 的 查 询 选 取 的 查 询 计 划 , 使 用 EXPLAIN EXECUTE 。
有 关 查 询 规 划 和 PostgreSQL 为 查 询 优 化 的 目 的 收 集 的 统 计 的 更 多 信 息 , 参 阅 ANALYZE [ analyze (7)] 文 档 。
COMPATIBILITY 兼 容 性
SQL 标 准 包 含 一 个 PREPARE 语 句 , 但 是 它 只 用 于 嵌 入 的 SQL 客 户 端 。 PostgreSQL 实 现 的 PREPARE 语 句 的 语 法 也 略 有 不 同 。
译 者
Postgresql 中 文 网 站 何 伟 平 <laser@pgsqldb.org>
跋
本
页 面 中 文 版 由
中 文 man 手 册 页 计
划 提 供 。
中 文 man 手 册 页 计
划 :
https://github.com/man-pages-zh/manpages-zh