【发布时间】:2018-06-24 16:08:02
【问题描述】:
我正在尝试寻找创建分区表的示例。 我有一些包含许多元组的表,我可以根据一列的值对它们进行分类,但是,我只是找到使用范围和日期的示例(我的列是 varchar,而在其他表中,是 int/外键)。 我正在尝试使用这种技术加快我的 SELECT 速度。
这是我的一个 CREATE 表(列 Source 将用于对该表进行分区):
CREATE TABLE tb_hit_source (
Hit_SourceId bigserial NOT NULL,
Source varchar(50) NOT NULL,
UniqueId varchar(50) NOT NULL,
tb_hit_HitId int8 NOT NULL,
CONSTRAINT tb_hit_source_ak_1 UNIQUE (Source, tb_hit_HitId, UniqueId) NOT DEFERRABLE INITIALLY IMMEDIATE,
CONSTRAINT tb_hit_source_pk PRIMARY KEY (Hit_SourceId)
);
CREATE INDEX tb_hit_source_idx_1 on tb_hit_source (Source ASC);
CREATE INDEX tb_hit_source_idx_2 on tb_hit_source (tb_hit_HitId ASC);
ALTER TABLE tb_hit_source ALTER COLUMN Hit_SourceId SET DEFAULT nextval('"HitSourceId_seq_tb_hit_source"');;
【问题讨论】:
-
如何使用 source 对表进行分区?
-
对表进行分区只会加速顺序扫描。
-
@a_horse_with_no_name 我已经看过手册,但是,在我的问题中,我说我找不到没有范围或日期的示例
-
@Jasen Source,在这个表中,表示从哪里获取这个元组的数据。我有一个有限的来源列表。该表将有 400 万个元组。从每个来源,我有大约 500.000 个元组(除了 1 个具有大约 170 万个元组的来源)。
-
@LaurenzAlbe 我没有如何在分区表中使用索引?
标签: postgresql database-partitioning postgresql-10