更新时间:2025-03-13 GMT+08:00
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。在查询执行时,满足这些条件的行会被包含在最终的结果集中。 |
父主题: 表访问方式