小编Kyl*_*yle的帖子

大表的慢窗函数查询

我正在对 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

5
推荐指数
1
解决办法
1789
查看次数