Postgresql 表的隐式索引
我正在学习Postgresql和db。我有一个这样的简单查询,我想了解它的作用Postgresql 表的隐式索引,postgresql,postgresql-9.1,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 w
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"
是c_mom_id
,但是在namec_mom_key
下创建隐式索引的目的是什么:
做什么谢谢,
:
符号是PostgreSQL特有的符号,在本例中输入bpchar
(空白填充字符)
创建一个索引以支持主键,从而使它们更有效。如果没有索引来支持它,则每个insert语句都必须扫描整个表,以确定插入是否会创建重复键。使用索引可以加快速度(如果表很大,则会显著加快速度)
这不是特定于PostgreSQL的。许多关系数据库将创建唯一的索引以支持主键。与您的问题无关,但
是活动字符(1)默认的“Y”::bpchar not NULL,
意味着使用一个UTF-8编码字符来选择0/1单位值(因此一位有几个字节),请使用布尔数据类型存储布尔值。顺便说一句,您不需要同时使用start\u date
和start\u time
<代码>时间戳包括日期和时间。