, Utilisez une table MQT

Une table de requête matérialisée (MQT Materialized Query Table) est une table dont la définition est basée sur le résultat d’une requête. Les données contenues dans un MQT sont dérivées d’une ou plusieurs tables sur lesquelles la définition de la table de requête matérialisée est basée.

Cette solution est assez peu utilisée sur l’IBMi mais beaucoup plus sur DB2 Universal.

Pour créer une MQT create table grefer.lstsrc_mqt as ( votre requête )

DATA INITIALLY IMMEDIATE
REFRESH DEFERRED
ENABLE QUERY OPTIMIZATION
MAINTAINED BY USER;

Ces options peuvent changer, vérifiez dans les documentations IBM, par exemple ici https://www.ibm.com/docs/en/i/7.4?topic=database-overview

exemple ici :

En sélectionnant la bibliothèque, vous pouvez avoir plusieurs tables et utiliser des requêtes très compliquées.

create table grefer.lstsrc_mqt as
(select SRCLIB, SRCFIL, SRCMBR, SRCTYP, SRCSEQ, SRCDTA, SRCDAT from grefer.lstsrc
where srclib = ‘GSEND’)
DATA INITIALLY IMMEDIATE
REFRESH DEFERRED
ENABLE QUERY OPTIMIZATION
MAINTAINED BY USER;

Ça peut être une bonne solution pour les grosses extractions, c’est très intéressant pour de la BI par exemple.

Vous l’utilisez ensuite comme une table normale.

select * from grefer.lstsrc

Quand vous décidez de mettre à jour vos données vous utiliserez un refresh ce qui sera plus rapide qu’une régénération de table ou qu’une nouvelle exécution.

Exemple
refresh table grefer.lstsrc_mqt

plus d’informations ici https://developer.ibm.com/articles/dm-0509melnyk/