如何找出优化器为特定查询选择的访问路径?
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 列告诉我们是否可以从索引本身获取数据。

