
# Index Only Scan
#### 算子说明
Index Only Scan是GaussDB中的一种查询优化技术，它可以通过只扫描索引而不需要访问表数据来提高查询性能。在执行查询时，如果查询条件只涉及到表的某个索引列，就可以使用Index Only Scan来优化查询。Index Only Scan会直接扫描索引，从而减少了I/O操作和CPU开销，提高了查询性能。
#### 典型场景
只需要查询索引列的值，而不需要访问表中的其他列。例如，查询一个表中的某个列的最大值或最小值，或者查询一个列的不同值的数量。
#### 示例
示例：目标列中仅含索引列。
```
--数据准备。 
gaussdb=# CREATE TABLE test2 (a int, b int); 
CREATE TABLE 
gaussdb=# CREATE INDEX test2_idx ON test2 (a, b); 
CREATE INDEX 
--随机插入1000条数据。
gaussdb=# INSERT INTO test2 VALUES(generate_series(1, 1000), generate_series(1, 1000)); 
INSERT 0 1000
--执行结果 
gaussdb=# EXPLAIN SELECT a, b FROM test2 WHERE a = 10 AND b = 20; 
                                 QUERY PLAN                                  
---------------------------------------------------------------------------- 
 [Bypass] 
 Index Only Scan using test2_idx on test2  (cost=0.00..4.27 rows=1 width=8) 
   Index Cond: ((a = 10) AND (b = 20)) 
(3 rows)
--删除表。
gaussdb=# DROP TABLE test2;
```
上述示例中，Index Only Scan算子输出信息如下所示。
| 信息名称            | 含义                                                               |
|:---|:---|
| Index Only Scan | 算子的名称。                                                           |
| Index Cond      | 该算子的过滤谓词，示例中的过滤条件为a列的值等于10并且b的值等于20。在查询执行时，满足这些条件的行会被包含在最终的结果集中。 |
   
