执行计划中table scan 和table get 有什么区别?

执行计划中table scan 和table get 有什么区别?

1 个赞

@论坛小助手

在执行计划中,TABLE SCANTABLE GET 是两种不同的数据访问方法,它们的主要区别在于访问数据的方式和范围:

  1. TABLE SCAN:当执行计划中出现 TABLE SCAN 时,意味着数据库需要遍历表中的所有或部分行来找到满足查询条件的数据。这通常发生在没有合适的索引来加速查询的情况下,或者查询条件涉及到的行数较多。例如,从片段17601中可以看到,PHY_VEC_TABLE_SCAN 算子扫描了50万行数据,只输出了5行,这表明表上可能缺少合适的索引。

  2. TABLE GETTABLE GET 则是指通过主键或唯一索引直接定位到表中的特定行。这种方式通常更高效,因为它可以直接定位到所需的数据,无需扫描整个表。当查询条件能够通过索引快速定位到单个或少量的记录时,数据库会选择 TABLE GET 方法。

更多信息请查看:

  1. 诊断实践:使用 SQL_PLAN_MONITOR 分析性能问题
  2. 阅读和管理 OceanBase 数据库 SQL 执行计划