更新时间:2026-07-28 GMT+08:00
最佳实践
多索引自适应选择支持,举例如下:
CREATE TABLE t1(c1 int, c2 int, c3 int, c4 varchar(32), c5 text);
CREATE INDEX t1_idx2 on t1(c1,c2,c3,c4);
CREATE INDEX t1_idx1 on t1(c1,c2,c3);
INSERT INTO t1( c1, c2, c3, c4, c5) SELECT (random()*(2*10^9))::integer , (random()*(2*10^9))::integer, (random()*(2*10^9))::integer, (random()*(2*10^9))::integer, repeat('abc', i%10) ::text FROM generate_series(1,1000000) i;
INSERT INTO t1( c1, c2, c3, c4, c5) SELECT (random()*1)::integer, (random()*1)::integer, (random()*1)::integer, (random()*(2*10^9))::integer, repeat('abc', i%10) ::text FROM generate_series(1,1000000) i; 性能对比:
随机参数:c1~ random(1, 20); c2~ random(1, 20); c3~ random(1, 20); c4 ~ random(2, 10000)
线程数50,客户端50,执行时长60s。
| 方法 | 语句 | tps |
|---|---|---|
| gplan | PREPARE k AS SELECT * FROM t1 WHERE c1=$1 AND c2=$2 AND c3=$3 AND c4=$4; | 35126 |
| cplan | PREPARE k AS SELECT /*+ use_cplan */ * FROM t1 WHERE c1=$1 AND c2=$2 AND c3=$3 AND c4=$4; | 75817 |
| aplan | PREPARE k AS SELECT /*+ choose_adaptive_gplan */ * FROM t1 WHERE c1=$1 AND c2=$2 AND c3=$3 AND c4=$4; | 175681 |
父主题: 自适应计划选择