
# 最佳实践
多索引自适应选择支持，举例如下：
```
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。
表1各方法性能对比 
| **方法** | **语句**                                                                                                        | **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  |
   
