云数据库 GAUSSDB-关键字概述:表访问方式

时间:2025-06-03 09:33:18

表访问方式

  • Seq Scan

    全表顺序扫描。

  • Index Scan

    索引扫描,优化器决定使用两步的规划:最底层的规划节点访问一个索引,找出匹配索引条件的行的位置,然后上层规划节点真实地从表中抓取出那些行。独立地抓取数据行比顺序地读取它们的开销高很多,但是因为并非所有表的页面都被访问了,这么做实际上仍然比一次顺序扫描开销要少。使用两层规划的原因是,上层规划节点在读取索引标识出来的行位置之前,会先将它们按照物理位置排序,这样可以最小化独立抓取的开销。

    如果在WHERE里面使用的好几个字段上都有索引,那么优化器可能会使用索引的AND或OR的组合。但是这么做要求访问两个索引,因此与只使用一个索引,而把另外一个条件只当作过滤器相比,这个方法未必是更优。

    索引扫描可以分为以下几类,它们之间的差异在于索引的排序机制。

    • Bitmap Index Scan

      使用位图索引抓取数据页。

    • Index Scan using index_name

      使用简单索引搜索,该方式按照索引键的顺序在索引表中抓取数据。该方式最常用于在大数据量表中只抓取少量数据的情况,或者通过ORDER BY条件匹配索引顺序的查询,以减少排序时间。

    • Index-Only Scan

      当需要的所有信息都包含在索引中时,仅索引扫描便可获取所有数据,不需要引用表。

  • Bitmap Heap Scan

    从其他操作创建的位图中读取页面,过滤掉不符合条件的行。位图堆扫描可避免随机I/O,加快读取速度。

  • TID Scan

    通过TupleID扫描表。

  • Index Ctid Scan

    通过Ctid上的索引对表进行扫描。

  • CTE Scan

    CTE对子查询的操作进行评估并将查询结果临时存储,相当于一个临时表。CTE Scan算子对该临时表进行扫描。

  • Foreign Scan

    从远程数据源读取数据。

  • Function Scan

    获取函数返回的结果集,将它们作为从表中读取的行并返回。

  • Sample Scan

    查询并返回采样数据。

  • Subquery Scan

    读取子查询的结果。

  • Values Scan

    作为VALUES命令的一部分读取常量。

  • WorkTable Scan

    工作表扫描。在操作中间阶段读取,通常是使用WITH RECURSIVE声明的递归操作。

support.huaweicloud.com/distributed-devg-v8-gaussdb/gaussdb-42-1544.html