我正在对 PostgreSQL 9.4rc1 上的新数据库设计进行一些性能测试,我看到一些使用窗口函数的查询速度很慢。这是我的表设置:
CREATE TABLE player_stat (
player_id VARCHAR(200) NOT NULL,
stat_id BIGINT NOT NULL,
value BIGINT NOT NULL DEFAULT 0,
last_updated TIMESTAMP WITH TIME ZONE NOT NULL,
last_active TIMESTAMP WITH TIME ZONE DEFAULT NULL,
CONSTRAINT player_stat_pk PRIMARY KEY (player_id, stat_id),
CONSTRAINT player_stat_fk1 FOREIGN KEY(stat_id) REFERENCES stat (id)
);
CREATE INDEX player_stat_stat_value_player_desc
ON player_stat (stat_id, value DESC, player_id ASC);
Run Code Online (Sandbox Code Playgroud)
我在这个表中插入了 3000 万行,分为 3 个统计数据:
INSERT INTO player_stat (player_id, stat_id, value, last_updated) SELECT x.id, 1, x.v, now() FROM (SELECT generate_series(1,10000000) …
Run Code Online (Sandbox Code Playgroud) postgresql performance datatypes postgresql-9.4 postgresql-performance