Db2explain Advis
Db2explain Advis
e.g.
vi culpritsql.sql
e.g.
6) check access plan again after index for new cost after index
###########################################################################
E.g.
===> Pre index explain
DB2 Universal Database Version 11.1, 5622-044 (c) Copyright IBM Corp. 1991, 2017
Licensed Material - Program Property of IBM
IBM DATABASE 2 Explain Table Format Tool
DB2_VERSION: 11.01.3
FORMATTED ON DB: TEST
SOURCE_NAME: SQLC2O27
SOURCE_SCHEMA: NULLID
SOURCE_VERSION:
EXPLAIN_TIME: 2021-02-10-14.38.07.984952
EXPLAIN_REQUESTER: DB2INST1
Database Context:
----------------
Parallelism: None
CPU Speed: 1.417033e-07
Comm Speed: 100
Buffer Pool size: 1173668
Sort Heap size: 2825
Database Heap size: 4478
Lock List size: 511962
Maximum Lock List: 98
Average Applications: 1
Locks Available: 16055128
Package Context:
---------------
SQL Type: Dynamic
Optimization Level: 5
Blocking: Block All Cursors
Isolation Level: Cursor Stability
Original Statement:
------------------
SELECT
JOB_EXECUTION_ID,
START_TIME,
END_TIME,
STATUS,
EXIT_CODE,
EXIT_MESSAGE,
CREATE_TIME,
LAST_UPDATED,
VERSION,
JOB_CONFIGURATION_LOCATION
from
BATCH_JOB_EXECUTION
where
JOB_INSTANCE_ID =1
order by
JOB_EXECUTION_ID desc
Optimized Statement:
-------------------
SELECT
Q1.JOB_EXECUTION_ID AS "JOB_EXECUTION_ID",
Q1.START_TIME AS "START_TIME",
Q1.END_TIME AS "END_TIME",
Q1.STATUS AS "STATUS",
Q1.EXIT_CODE AS "EXIT_CODE",
Q1.EXIT_MESSAGE AS "EXIT_MESSAGE",
Q1.CREATE_TIME AS "CREATE_TIME",
Q1.LAST_UPDATED AS "LAST_UPDATED",
Q1.VERSION AS "VERSION",
Q1.JOB_CONFIGURATION_LOCATION AS "JOB_CONFIGURATION_LOCATION"
FROM
ACCT.BATCH_JOB_EXECUTION AS Q1
WHERE
(Q1.JOB_INSTANCE_ID = 1)
ORDER BY
Q1.JOB_EXECUTION_ID DESC
Access Plan:
-----------
Total Cost: 466.116
Query Degree: 1
Rows
RETURN
( 1)
Cost
I/O
|
1.00542
TBSCAN
( 2)
466.116
99
|
1.00542
SORT
( 3)
466.116
99
|
1.00542
TBSCAN
( 4)
466.116
99
|
2414
TABLE: ACCT
BATCH_JOB_EXECUTION
Q1
--
--
-- LIST OF RECOMMENDED INDEXES
-- ===========================
-- index[1], 0.036MB
CREATE INDEX "DB2INST1"."IDX2102101240290" ON "ACCT "."BATCH_JOB_EXECUTION"
("JOB_INSTANCE_ID" ASC, "JOB_EXECUTION_ID" DESC) ALLOW
REVERSE SCANS COLLECT SAMPLED DETAILED STATISTICS;
COMMIT WORK ;
--
--
-- RECOMMENDED EXISTING INDEXES
-- ============================
--
--
-- UNUSED EXISTING INDEXES
-- ============================
-- ===========================
--
--<?xml version="1.0"?>
--<design-advisor>
--<index>
--<identifier>
--<name>IDX2102101240290</name>
--<schema>DB2INST1</schema>
--</identifier>
--<table><identifier>
--<name>BATCH_JOB_EXECUTION</name>
--<schema>ACCT </schema>
--</identifier></table>
--<statementlist>1</statementlist>
--<benefit>452.000000</benefit>
--<overhead>0.000000</overhead>
--<diskspace>0.036156</diskspace>
--</index>
--<statement>
--<statementnum>1</statementnum>
--<statementtext>
-- SELECT JOB_EXECUTION_ID, START_TIME, END_TIME, STATUS,
-- EXIT_CODE, EXIT_MESSAGE, CREATE_TIME, LAST_UPDATED,
-- VERSION, JOB_CONFIGURATION_LOCATION from ACCT.BATCH_JOB_EXECUTION
-- where JOB_INSTANCE_ID =1 order by JOB_EXECUTION_ID
-- desc
--</statementtext>
--<objects>
--<identifier>
--<name>BATCH_JOB_EXECUTION</name>
--<schema>ACCT </schema>
--</identifier>
--<identifier>
--<name>IDX2102101240290</name>
--<schema>DB2INST1</schema>
--</identifier>
--</objects>
--<benefit>452.000000</benefit>
--<frequency>1</frequency>
--</statement>
--</design-advisor>
Database Context:
----------------
Parallelism: None
CPU Speed: 1.417033e-07
Comm Speed: 100
Buffer Pool size: 1171844
Sort Heap size: 2263
Database Heap size: 4478
Lock List size: 230259
Maximum Lock List: 98
Average Applications: 1
Locks Available: 7220922
Package Context:
---------------
SQL Type: Dynamic
Optimization Level: 5
Blocking: Block All Cursors
Isolation Level: Cursor Stability
Original Statement:
------------------
SELECT
JOB_EXECUTION_ID,
START_TIME,
END_TIME,
STATUS,
EXIT_CODE,
EXIT_MESSAGE,
CREATE_TIME,
LAST_UPDATED,
VERSION,
JOB_CONFIGURATION_LOCATION
from
BATCH_JOB_EXECUTION
where
JOB_INSTANCE_ID =1
order by
JOB_EXECUTION_ID desc
Optimized Statement:
-------------------
SELECT
Q1.JOB_EXECUTION_ID AS "JOB_EXECUTION_ID",
Q1.START_TIME AS "START_TIME",
Q1.END_TIME AS "END_TIME",
Q1.STATUS AS "STATUS",
Q1.EXIT_CODE AS "EXIT_CODE",
Q1.EXIT_MESSAGE AS "EXIT_MESSAGE",
Q1.CREATE_TIME AS "CREATE_TIME",
Q1.LAST_UPDATED AS "LAST_UPDATED",
Q1.VERSION AS "VERSION",
Q1.JOB_CONFIGURATION_LOCATION AS "JOB_CONFIGURATION_LOCATION"
FROM
ACCT.BATCH_JOB_EXECUTION AS Q1
WHERE
(Q1.JOB_INSTANCE_ID = 1)
ORDER BY
Q1.JOB_EXECUTION_ID DESC
Access Plan:
-----------
Total Cost: 13.7992
Query Degree: 1
Rows
RETURN
( 1)
Cost
I/O
|
1.00583
FETCH
( 2)
13.7992
2.02625
/----+-----\
1.00583 2414
IXSCAN TABLE: ACCT
( 3) BATCH_JOB_EXECUTION
6.81342 Q1
1
|
2414
INDEX: ACCT
IDX1
Q1
--
--
-- LIST OF RECOMMENDED INDEXES
-- ===========================
-- no indexes are recommended for this workload.
--
--
-- RECOMMENDED EXISTING INDEXES
-- ============================
-- RUNSTATS ON TABLE "ACCT "."BATCH_JOB_EXECUTION" FOR SAMPLED DETAILED INDEX
"ACCT "."IDX1" ;
-- COMMIT WORK ;
--
--
-- UNUSED EXISTING INDEXES
-- ============================
-- ===========================
--
--<?xml version="1.0"?>
--<design-advisor>
--<statement>
--<statementnum>1</statementnum>
--<statementtext>
-- SELECT JOB_EXECUTION_ID, START_TIME, END_TIME, STATUS,
-- EXIT_CODE, EXIT_MESSAGE, CREATE_TIME, LAST_UPDATED,
-- VERSION, JOB_CONFIGURATION_LOCATION from ACCT.BATCH_JOB_EXECUTION
-- where JOB_INSTANCE_ID =1 order by JOB_EXECUTION_ID
-- desc
--</statementtext>
--<objects>
--<identifier>
--<name>BATCH_JOB_EXECUTION</name>
--<schema>ACCT </schema>
--</identifier>
--<identifier>
--<name>IDX1</name>
--<schema>ACCT </schema>
--</identifier>
--</objects>
--<benefit>0.000000</benefit>
--<frequency>1</frequency>
--</statement>
--</design-advisor>