Man page - create_index(7)
Manual
CREATE INDEX
NAMESYNOPSIS
DESCRIPTION 描 述
PARAMETERS 参 数
NOTES 注 意
EXAMPLES 例 子
COMPATIBILITY 兼 容 性
译 者
跋
NAME
CREATE INDEX - 定 义 一 个 新 索 引
SYNOPSIS
CREATE [ UNIQUE
] INDEX
name
ON
table
[ USING
method
]
( {
column
| (
expression
) } [
opclass
] [, ...] )
[ WHERE
predicate
]
DESCRIPTION 描 述
CREATE INDEX 在 指 定 的 表 上 构 造 一 个 名 为 index_name 的 索 引 。 索 引 主 要 用 来 提 高 数 据 库 性 能 。 但 是 如 果 不 恰 当 的 使 用 将 导 致 性 能 的 下 降 。
索 引 的 键 字 字 段 是 以 字 段 名 的 方 式 声 明 的 , 或 者 是 可 选 的 写 在 一 个 圆 括 弧 里 面 的 表 达 式 。 如 果 索 引 方 式 支 持 多 个 字 段 索 引 , 那 么 我 们 也 可 以 声 明 多 个 字 段 。
一 个 索 引 字 段 可 以 是 一 个 使 用 表 的 行 的 一 个 或 多 个 字 段 的 数 值 进 行 计 算 的 表 达 式 。 整 个 特 性 可 用 于 获 取 对 基 本 数 据 某 种 变 形 的 快 速 访 问 。 比 如 , 一 个 在 upper(col) 上 的 函 数 索 引 将 允 许 子 句 WHERE upper(col) = ’JIM’ 使 用 索 引 。
PostgreSQL 为 从 索 引 提 供 B-tree, R-tree, hash( 散 列 ) 和 GiST 索 引 方 法 。 B-tree 索 引 方 法 是 一 个 Lehman-Yao 高 并 发 B-trees 的 实 现 。 R-tree 索 引 方 法 用 Guttman 的 二 次 分 裂 算 法 实 现 了 标 准 的 R-trees。 hash( 散 列 ) 索 引 方 法 是 Litwin 的 线 性 散 列 的 一 个 实 现 。 用 户 也 可 以 定 义 它 们 自 己 的 索 引 方 法 , 但 这 个 工 作 相 当 复 杂 。
如 果 出 现 了 WHERE 子 句 , 则 创 建 一 个 部 分 索 引 。 部 分 索 引 是 一 个 只 包 含 表 的 一 部 分 记 录 的 索 引 , 通 常 是 该 表 中 最 让 人 感 兴 趣 的 部 分 。 比 如 , 如 果 你 有 一 个 表 , 里 面 包 含 已 上 账 和 未 上 账 的 定 单 , 未 上 账 的 定 单 只 占 表 的 一 小 部 分 而 且 这 部 分 是 最 常 用 的 部 分 , 那 么 你 就 可 以 通 过 只 在 这 个 部 分 创 建 一 个 索 引 来 改 善 性 能 。 另 外 一 个 可 能 的 用 途 是 用 WHERE 和 UNIQUE 强 制 一 个 表 的 某 个 子 集 的 唯 一 性 。
在 WHERE 子 句 里 用 的 表 达 式 只 能 引 用 下 层 表 的 字 段 ( 但 是 它 可 以 使 用 所 有 字 段 , 而 不 仅 仅 是 被 索 引 的 字 段 ) 。 目 前 , 子 查 询 和 聚 集 表 达 式 也 不 能 出 现 在 WHERE里 。
索 引 定 义 里 的 所 有 函 数 和 操 作 符 都 必 须 是 immutable, ( 不 变 的 ) 也 就 是 说 , 它 们 的 结 果 必 须 只 能 依 赖 于 它 们 的 输 入 参 数 , 而 决 不 能 依 赖 任 何 外 部 的 影 响 ( 比 如 另 外 一 个 表 的 内 容 或 者 当 前 时 间 ) 。 这 个 约 束 确 保 该 索 引 的 行 为 是 定 义 完 整 的 。 要 在 一 个 索 引 上 使 用 用 户 定 义 函 数 , 请 记 住 在 你 创 建 它 的 时 候 把 它 标 记 为 immutable的 函 数 。
PARAMETERS 参 数
|
UNIQUE |
令 系 统 检 测 当 索 引 创 建 时 ( 如 果 数 据 已 经 存 在 ) 和 每 次 添 加 数 据 时 表 中 是 否 有 重 复 值 。 如 果 插 入 或 更 新 的 值 会 导 致 重 复 的 记 录 时 将 生 成 一 个 错 误 。
|
name |
要 创 建 的 索 引 名 。 这 里 不 能 包 含 模 式 名 ; 索 引 总 是 在 同 一 个 模 式 中 作 为 其 父 表 创 建 的 。
|
table |
要 索 引 的 表 名 ( 可 能 有 模 式 修 饰 ) 。
|
method |
用 于 索 引 的 方 法 的 名 字 。 可 选 的 名 字 是 btree, hash, rtree, 和 gist。 缺 省 方 法 是 btree。
|
column |
表 的 列 /字 段 名 。
expression
一 个 基 于 该 表 的 一 个 或 多 个 字 段 的 表 达 式 。 这 个 表 达 式 通 常 必 须 带 着 圆 括 弧 包 围 写 出 , 如 语 法 中 显 示 那 样 。 不 过 , 如 果 表 达 式 有 函 数 调 用 的 形 式 , 那 么 圆 括 弧 可 以 省 略 。
opclass
一 个 关 联 的 操 作 符 表 。 参 阅 下 文 获 取 细 节 。
predicate
为 一 个 部 分 索 引 定 义 约 束 表 达 式 。
NOTES 注 意
参 阅 ‘‘Indexes’’ 获 取 有 关 何 时 使 用 索 引 , 何 时 不 使 用 索 引 , 以 及 哪 种 情 况 下 是 有 用 的 信 息 。
目 前 , 只 有 B-tree 和 gist 索 引 方 法 支 持 多 字 段 索 引 。 缺 省 时 最 多 可 以 声 明 32 个 键 字 ( 这 个 限 制 可 以 在 制 作 PostgreSQL 时 修 改 ) 。 目 前 只 有 B-tree 支 持 唯 一 索 引 。
可 以 为 索 引 的 每 个 列 /字 段 声 明 一 个 操 作 符 表 。 操 作 符 表 标 识 将 要 被 该 索 引 用 于 该 列 /字 段 的 操 作 符 。 例 如 , 一 个 四 字 节 整 数 的 B-tree 索 引 将 使 用 int4_ops 表 ; 这 个 操 作 符 表 包 括 四 字 节 整 数 的 比 较 函 数 。 实 际 上 , 该 域 的 数 据 类 型 的 缺 省 操 作 符 表 一 般 就 足 够 了 。 某 些 数 据 类 型 有 操 作 符 表 的 原 因 是 , 它 们 可 能 有 多 于 一 个 的 有 意 义 的 顺 序 。 例 如 , 我 们 对 复 数 类 型 排 序 时 有 可 能 以 绝 对 值 或 者 以 实 部 。 我 们 可 以 通 过 为 该 数 据 类 型 定 义 两 个 操 作 符 表 , 然 后 在 建 立 索 引 的 时 候 选 择 合 适 的 表 来 实 现 。 有 关 操 作 符 表 更 多 的 信 息 在 ‘‘Operator Classes’’ 和 ‘‘Interfacing Extensions to Indexes’’ 里 。
使 用 DROP INDEX [ drop_index (7)] 删 除 一 个 索 引 。
EXAMPLES 例 子
在 表 films上 的 title字 段 创 建 一 个 B-tree 索 引 :
CREATE UNIQUE INDEX title_idx ON films (title);
COMPATIBILITY 兼 容 性
CREATE INDEX 是 PostgreSQL 语 言 扩 展 。 在 SQL 标 准 中 没 有 CREATE INDEX 命 令 。
译 者
Postgresql 中 文 网 站 何 伟 平 <laser@pgsqldb.org>
跋
本
页 面 中 文 版 由
中 文 man 手 册 页 计
划 提 供 。
中 文 man 手 册 页 计
划 :
https://github.com/man-pages-zh/manpages-zh