表的隐式索引

时间:2013-09-09 09:54:52

标签: postgresql postgresql-9.1

我正在学习Postgresql和db。我有一个像这样的简单查询,我想了解它的作用

CREATE TABLE adempiere.c_mom(
c_mom_id NUMERIC(10,0) NOT NULL,
isactive character(1) DEFAULT 'Y'::bpchar NOT NULL,
start_date date NOT NULL,
start_time timestamp without time zone NOT NULL,
end_time timestamp without time zone NOT NULL,
CONSTRAINT c_mom_pkey PRIMARY KEY (c_mom_id)
);

所以在我执行完之后我得到了

NOTICE:  CREATE TABLE / PRIMARY KEY will create implicit index "c_mom_pkey" for table "c_mom"
  1. 现在我知道我的PK is c_mom_id,但是在名称c_mom_key下创建隐式索引的目的是什么?
  2. DEFAULT 'Y'::bpchar或psql中::的一般内容是什么?
  3. 谢谢

1 个答案:

答案 0 :(得分:2)

::表示法是PostgreSQL特定的type cast表示法,在这种情况下键入bpchar(空白填充的字符)。

创建索引以备份主键以使其有效。如果没有索引来支持它,则每个insert语句都必须扫描整个表,以确定该插入是否会创建重复键。使用索引加速(如果表很大,则显着)。

这不是PostgreSQL特有的。许多关系数据库将创建唯一的索引来支持主键。