После того, как вы идентифицировали медленно выполняющиеся запросы и начальные проверки не выявили основные причины проблем, имеет смысл проанализировать план запроса, сгенерированный базой данных для медленно выполняющегося запроса. Интерпретировать эти планы и (особенно) сделать правильные выводы из полученных результатов не всегда просто, и вам может понадобиться помощь специалистов по базам данных.
db2 connect to <database name>
db2 "CALL SYSPROC.SYSINSTALLOBJECTS('EXPLAIN', 'C',CAST (NULL AS VARCHAR(128)), CAST (NULL AS VARCHAR(128)))"
или
db2 connect to <database name>
cd ~/sqllib/misc
db2 -tvf EXPLAIN.DDL
set current schema nes1011b;
select * from (SELECT itm_id, itm_primary_key pk , '' d
FROM tctg_itm_item
WHERE itm_id IN (
select pk_row.ita_item_id
from tctg_ita_item_attributes pk_row
where pk_row.ita_node_id = 1657
and pk_row.ita_value_string like '%335245' ESCAPE '\'
and pk_row.ita_next_version_id >= 999999999
and pk_row.ita_version_id <= 999999999
and pk_row.ita_catalog_id = 1602
fetch first 500 rows only ) AND itm_container_id = 1602
AND itm_version_id <= 999999999
AND itm_next_version_id >= 999999999
ORDER BY UPPER(pk) ) AS OM98 fetch first 10 rows only;
db2 set current explain mode explain
db2 -tvf sql1.sql
db2exfmt -d <dbname> -# 0 -w -1 -g TIC -n % -s % -o sql1_exfmt.
db2 set current explain mode no
Можно также использовать функцию db2support для сбора диагностической информации, относящейся к оптимизатору.
db2support . -d <dbname> -sf search.sql -cl 1
Будет создан файл db2support со всей запрошенной информацией и с выходными результатами db2exfmt. Дополнительную информацию смотрите в технической записке DB2: https://www-304.ibm.com/support/docview.wss?uid=swg21106550