0

我一般都在学习 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. 现在我知道我的 PKis c_mom_id了,但是在 name 下创建一个隐式索引的目的是什么c_mom_key
  2. 做什么DEFAULT 'Y'::bpchar,或者一般来说::psql 做什么?

谢谢

4

1 回答 1

2

::表示法是 PostgreSQL 特定的类型转换表示法,在本例中为 type bpchar(blank-padded char)。

创建一个索引来支持主键以提高它们的效率。如果没有索引来支持它,则每个插入语句都必须扫描整个表才能确定该插入是否会创建重复键。使用索引可以加快速度(如果表很大,则速度会非常快)。

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

于 2013-09-09T10:06:13.877 回答