我遇到了这样一种情况,Pg总是更喜欢对一个大约有7000万行的表进行顺序扫描。(索引扫描是该查询的理想选择,我已经通过设置enable_seq_scan=off来确认它,速度提高了200倍)
因此,为了帮助Pg更好地理解我的数据,我执行了以下操作
ALTER TABLE tablename ALTER COLUMN columnname SET STATISTICS 1000;
不幸的是,这需要来锁定整个表(锁太多)。
是否有避免锁定此语句的解决方案?
根据主键范围对此表进行数据共享,因此我希望Pg更好地理解我的Pk,以便它知道哪个用户获得了大量数据。如果我也增加PrimaryKey列
我已经创建了一个表,其范围分区为
CREATE TABLE nums_range (
id INT NOT NULL AUTO_INCREMENT,
PRIMARY KEY(id)
) PARTITION BY RANGE(id) (
PARTITION p0mil VALUES LESS THAN (1000000),
PARTITION p1mil VALUES LESS THAN (2000000),
PARTITION p2mil VALUES LESS THAN (3000000),
PARTITION p3mil