如何找出优化器为特定查询选择的访问路径?

db2databasebig data analytics

DB2 优化器在数据库的整体性能中起着重要作用。优化器为每个查询选择最佳访问路径,通过该路径可以从数据库中获取数据。它确定要遵循的索引、查询谓词等。

优化器会自动选择访问路径,我们可以使用 DB2 EXPLAIN 命令轻松找到访问路径。我们必须先设置查询编号,然后通过三个简单的步骤给出 SQL 查询来找出其访问路径。

例如,

我们有一个 DB2 ORDERS 表,我们想要检查在 ORDER_DATE 列上包含谓词的 SELECT 查询。

步骤 1: 执行以下 EXPLAIN 命令并设置查询编号,然后执行下面的 SELECT 查询。

示例

EXPLAIN PLAN SET QUERYNO=23445 FOR
SELECT ORDER_ID FROM ORDERS WHERE ORDER_DATE = ‘12-08-2020’

步骤 2: 上述 EXPLAIN 命令将使用相关查询和解释详细信息更新 PLAN 表。执行以下命令查看 PLAN 表中的详细信息。

示例

SELECT * FROM PLAN_TABLE WHERE QUERYNO = 23445

步骤 3:上述查询的结果将提供以下详细信息。

  • ACCESTYPE
  • MATCHCOLS
  • ACCESSNAME
  • INDEXONLY

ACCESTYPE 列包含访问方法的详细信息,例如索引扫描、仅索引扫描等。MATCHCOLS 列存储用于索引扫描的索引键数量。ACCESSNAME 列存储用于索引扫描的索引名称,INDEXONLY 列告诉我们是否可以从索引本身获取数据。


相关文章