Sei sulla pagina 1di 41

How to Access DB2 Efficiently from FOCUS

Michelle Cavanaugh Information Builders Summit 2010 User Conference June 2010

Confidential, unpublished property of CIGNA. Do not duplicate or distribute. Use and distribution limited solely to authorized personnel. 2009 CIGNA

How to Access DB2 Efficiently from FOCUS

Agenda

      

Introduction & Level Set Basic FOCUS/DB2 Steps DB2 Optimization Steps Traces How to Optimize FOCUS/DB2 Code Examples Q & As

2
Confidential, unpublished property of CIGNA. Do not duplicate or distribute. Use and distribution limited solely to authorized personnel. 2010 CIGNA

How to Access DB2 Efficiently from FOCUS

CIGNA Corporation is An employee benefits company uniquely positioned to help companies succeed and help people enjoy a better quality of life.

Disclaimer: The opinions and conclusions expressed are those of the speaker and not those of CIGNA Corporation.

Confidential, unpublished property of CIGNA. Do not duplicate or distribute. Use and distribution limited solely to authorized personnel. 2010 CIGNA

How to Access DB2 Efficiently from FOCUS


Introductions & Level Set
Me:  Installation  Troubleshooting  Optimization Hardware:  3 IBM z10s  5 Complexes/Groups  15 LPARs (Logical PARtitions) Software:  OS: z/OS 1.10 & 1.11  DB2: 27 SSIDs - V8 New Function Mode (NFM) - V9 Conversion Mode (CM) & NFM  FOCUS: 7.3.1 - Production & 7.6.10 - Test
4
Confidential, unpublished property of CIGNA. Do not duplicate or distribute. Use and distribution limited solely to authorized personnel. 2010 CIGNA

Basic FOCUS/DB2 Processing


1. FOCUS

 FOCUS calls requested module (TABLE, GRAPH) FOCUS  Reads & Parses MFD  Parses the request (FOCEXEC)  Calls the FOCUS/DB2 Interface
2. FOCUS/DB2 Interface

 Reads & Parses the AFD  Checks for Optimization System Level  Analyzes & Optimizes the request  Creates SELECT statements  Prepares, allocates & opens cursors  Calls DB2 to FETCH the rows of data
3. DB2

FOCUS/DB2 Interface

 Analyzes & Optimizes the passed SQL  Chooses the access path & retrieval method  Retrieves data  Creates answer set

DB2

5
Confidential, unpublished property of CIGNA. Do not duplicate or distribute. Use and distribution limited solely to authorized personnel. 2010 CIGNA

Basic FOCUS/DB2 Processing


4. FOCUS/DB2 Interface

 DB2 sends 1 row of data or a SQL status message to    

FOCUS

FOCUS Converts non-standard data into FOCUS formats FOCUS processes are done (IF/WHERE, DEFINEs, etc.) Puts valid rows into the FOCUS Internal Matrix Loops back to get the next row of the DB2 answer set This continues until the end of the answer set SQL code 100+ (End)

FOCUS/DB2 Interface

5. FOCUS

 Processes the Internal Matrix  The report is displayed

DB2

6
Confidential, unpublished property of CIGNA. Do not duplicate or distribute. Use and distribution limited solely to authorized personnel. 2010 CIGNA

FOCUS/DB2 Optimization
Optimization Order 1. Projection & Record Selection Always Done 2. JOINs 3. SORTs 4. Aggregation - When Required

If your code does not pass these steps, your request is not optimized

7
Confidential, unpublished property of CIGNA. Do not duplicate or distribute. Use and distribution limited solely to authorized personnel. 2010 CIGNA

FOCUS/DB2 Optimization
1. Projection & Record Selection Translates FOCUS to SQL
Projection Specific columns only SELECT  PRINT/SUM/COUNT Fields  Objects of JOINs & DEFINEs  PRINT * - All columns in Master Never a SELECT * Record Selection SQL WHERE  DEFINEs Within a Single Segment  YMD or YYMD Date Fields  LIKEs - With Same Length or Wildcards (%)* WHERE (T1.<Field> LIKE <Value>) * If different lengths or no wildcards WHERE (T1.<Field> = <value>)

8
Confidential, unpublished property of CIGNA. Do not duplicate or distribute. Use and distribution limited solely to authorized personnel. 2010 CIGNA

FOCUS/DB2 Optimization
2. JOIN Optimization
JOIN is Optimized: Single SELECT Statement  One DB2 Subsystem (SSID)  AFD has KEYS >0  Less than 15 TABLEs in a Single JOIN JOIN Optimized = JOIN Order does not matter JOIN is Not Optimized: FOCUS-Managed JOIN  Multiple DB2 Subsystems (SSID)  MASTER contains an OCCURS  DB2 to Fix files JOIN is NOT Optimized = JOIN Order Critical If JOINs Optimizes SORTs are checked

9
Confidential, unpublished property of CIGNA. Do not duplicate or distribute. Use and distribution limited solely to authorized personnel. 2010 CIGNA

FOCUS/DB2 Optimization
3. SORT Optimization
SORT is Optimized: SQL ORDER BY  SORT on REAL fields  SORT on COMPUTE fields before DEFINE fields  With FST. & LST. MFD/AFD KEYs must be correct SORT is Not Optimized if:  JOIN was not Optimized  Multi-Verb Request  ACROSSs, RETYPEs, & COMPUTEs that use Direct Operators  Direct Operators that require the Internal Matrix (e.g. TOT.PCT. or RPCT.) If SORT Optimizes Aggregates are checked

10
Confidential, unpublished property of CIGNA. Do not duplicate or distribute. Use and distribution limited solely to authorized personnel. 2010 CIGNA

FOCUS/DB2 Optimization
4. Aggregation Optimization Optional
Why?  DB2 is much better at aggregation  Less data returned to FOCUS  Less Data = Faster FOCUS Processing Aggregates that are Translated to SQL:  Verbs (SUM, COUNT & WRITE)  Direct Operators: MIN. MAX. AVE.  Most DEFINE fields - Constant fields using CNT. - Expressions that return with an arithmetic or character string value Aggregates that DO NOT get Translated to SQL:  COUNT with MISSING=ON  Multi-verb Requests Aggregation can be turned off via the following command: SQL <engine> SET OPTIMIZATION NO AGGR
11
Confidential, unpublished property of CIGNA. Do not duplicate or distribute. Use and distribution limited solely to authorized personnel. 2010 CIGNA

Trace Facility
Available Traces

1. STMTRACE Statement Trace 2. SQLAGGR SQL Aggregate Trace 3. SQLDI SQL Details Trace 4. SQLCALL See All Trace

12
Confidential, unpublished property of CIGNA. Do not duplicate or distribute. Use and distribution limited solely to authorized personnel. 2010 CIGNA

Trace Facility
1. STMTRACE
All SQL & DDL code  All generated SQL code SELECTs & WHEREs  All SQL Data Definition Language (DDL) for CREATEs  Output can be saved & Run in native SQL Pre- FOCUS 7.2 = FSTRACE4

2. SQLAGGR
JOIN, SORT & Aggregate Optimization Analysis  Last optimization level completed Best = AGGREGATION DONE Pre-FOCUS 7.2 = FSTRACE3

13
Confidential, unpublished property of CIGNA. Do not duplicate or distribute. Use and distribution limited solely to authorized personnel. 2010 CIGNA

Trace Facility
3. SQLDI
Shows All the details  SQL Statements  DB2 Return Codes (RC)  COMMIT & ROLLBACK Commands  SQL Cursor Operations  Works with ALL FOCUS Requests Pre-FOCUS 7.2 = FSTRACE

4. SQLCALL
Shows All Commands & Data exchange between Physical & Logical Layers of the Data Adaptor New with FOCUS 7.2

14
Confidential, unpublished property of CIGNA. Do not duplicate or distribute. Use and distribution limited solely to authorized personnel. 2010 CIGNA

Basic Steps to Optimize FOCUS/DB2 Code


Optimization Steps: 1. Set up Job for Traces 2. Restrict Record Retrieval 3. Pick your Trace Levels 4. Activate Selected Traces 5. Review Trace Output Optimization Levels & SQL Code
Did you make it to AGGREGATION DONE? If not Modify your FOCUS code and try again

15
Confidential, unpublished property of CIGNA. Do not duplicate or distribute. Use and distribution limited solely to authorized personnel. 2010 CIGNA

Optimization Steps
1. Setup Job for Traces

 Setup Trace file FSTRACE


Pre-Allocate FSTRACE & Reference in FOCUS JCL: //FSTRACE DD DSN=<file name>, // DCB=(LRECL=80,BLKSIZE=80,RECFM=F), // VOL=SER=<pack name>,SPACE=(CYL,(1,5,5)), // DISP=(NEW,CATLG,DELETE),UNIT=SYSALLDA And in your job... //FSTRACE DD SYSOUT: //FSTRACE DD SYSOUT=*, DCB=(LRECL=80, BLKSIZE=80,RECFM=F) DSN=<file name>,DISP=SHR

16
Confidential, unpublished property of CIGNA. Do not duplicate or distribute. Use and distribution limited solely to authorized personnel. 2010 CIGNA

Optimization Steps
2. Restrict Data Retrieval

 Eliminate Database Retrieval:


SET XRETRIEVAL = OFF

 Limit the Number of Rows Being Read:


YES - IF READLIMIT EQ 100 NO - IF RECORDLIMIT EQ 100

3. Pick Your Trace Levels

 Recommended levels are:


STMTRACE & SQLAGGR

 Use only if absolutely necessary:


SQLDI & SQLCALL
17
Confidential, unpublished property of CIGNA. Do not duplicate or distribute. Use and distribution limited solely to authorized personnel. 2010 CIGNA

Optimization Steps
4. Activate Selected Traces

 Start the Trace Facility


SET TRACEUSER = ON SET TRACEOFF = ALL

 Activate the Requested Traces


SET TRACEON=SQLAGGR/DB2/FSTRACE SET TRACEON=STMTRACE/DB2/FSTRACE

 Check Trace Levels:


SET TRACEON = ? Execute your FOCUS/DB2 request

18
Confidential, unpublished property of CIGNA. Do not duplicate or distribute. Use and distribution limited solely to authorized personnel. 2010 CIGNA

Optimization Steps

5. Review Trace Output

 You should try for only one SELECT statement  There should be WHEREs  You should see AGGREGATION DONE
If not return to & try again!

19
Confidential, unpublished property of CIGNA. Do not duplicate or distribute. Use and distribution limited solely to authorized personnel. 2010 CIGNA

FOCUS/DB2 Example: Single TABLE

CIGNA and the Tree of Life logo are registered service marks of CIGNA Intellectual Property, Inc., licensed for use by CIGNA Corporation and its operating subsidiaries. All products and services are provided exclusively by such operating subsidiaries and not by CIGNA Corporation. Such operating subsidiaries include International Rehabilitation Associates, Inc. (Intracorp), CIGNA Behavioral Health, Inc., vielife Limited, Connecticut General Life Insurance Company and HMO subsidiaries of CIGNA Health Corporation. 000000 00/09 2010 CIGNA
Confidential, unpublished property of CIGNA. Do not duplicate or distribute. Use and distribution limited solely to authorized personnel. 2009 CIGNA

FOCUS/DB2 Optimization - Setup


DB2OPT FOCEXEC
-* TURN OFF DATA RETRIEVAL SET XRETRIEVAL = OFF -* ACTIVATE THE TRACE FACILITY SET TRACEUSER=ON SET TRACEOFF=ALL -* ACTIVATE SPECIFIC TRACES SET TRACEON=SQLAGGR/DB2/FSTRACE SET TRACEON=STMTRACE/DB2/FSTRACE -* CHECK TRACE LEVEL SET TRACEON = ?

DB2OPT JCL
Allocate all the Required FOCUS files and...
//* ALLOCATE TRACE FILE //FSTRACE DD DSN=TEST.FOCUS.FSTRACE,DISP=SHR //* //SYSIN DD * EXEC DB2OPT <- Opt Set up EXEC <FOCEXEC to be optimized> FIN /* // <- FSTRACE

21

Confidential, unpublished property of CIGNA. Do not duplicate or distribute. Use and distribution limited solely to authorized personnel. 2010 CIGNA

FOCUS/DB2 Optimization Single DB2 TABLE


MASTER File Description - MFD
$$$ CREATED BY AUTODB2 ON 06/24/04 AT FILENAME=HTRARGEL,SUFFIX=SQLDS,$ SEGNAME='ARGUS_EL',SEGTYPE=S0,$ FIELD=CUST_NUM ,CUST_NUM ,A4 FIELD=CLNT_NUM ,CLNT_NUM ,A4 FIELD=HMO_CD ,HMO_CD ,A3 FIELD=MBR_END_DT ,MBR_END_DT ,A10 MANY MORE FIELDS... 11.47.33 BY XXXX

,A4 ,A4 ,A3 ,A10

,MISSING=OFF,$ ,MISSING=OFF,$ ,MISSING=OFF,$ ,MISSING=OFF,$

Access File Description - AFD


$$$ CREATED BY AUTODB2 ON 06/24/04 AT 11.47.33 BY XXXX $$$ FILENAME=HTRARGEL,SUFFIX=SQLDS,$ SEGNAME='ARGUS_EL', TABLENAME='"WINDSOR2_DB2P"."GHTR"."ARGUS_ELIGIBILITY"', KEYS=04,WRITE=YES,KEYORDER=LOW,$

22
Confidential, unpublished property of CIGNA. Do not duplicate or distribute. Use and distribution limited solely to authorized personnel. 2010 CIGNA

FOCUS/DB2 Optimization Single DB2 TABLE


FOCEXEC
-SET &THISYY=EDIT(&DATEYYMD,'9999$$$$$$'); <- Date Setup -SET &ENDYY=(&THISYY - 2); -SET &THISMM=EDIT(&DATEYYMD,'$$$$$01$$$'); -SET &THISDD=EDIT(&DATEYYMD,'$$$$$$$$01'); -SET &ENDDT8=(&ENDYY | &THISMM | &THISDD); -SET &ENDDT=EDIT(&ENDDT8,'9999-$01-$01'); -* DEFINE FILE HTRARGEL <- DEFINEs ACCT/A4 = EDIT(SUBACT_NO,'9999$$'); TOSS3501/A1 = IF HMO_CD EQ '200' THEN 'Y' ELSE 'N'; TOSS3502/A1 = IF ACCT FROM '0400' TO '0499' THEN 'Y' ELSE IF ACCT FROM '4800' TO '4999' THEN 'Y' ELSE 'N'; TOSS3503/A2 = TOSS3501|TOSS3502; TOSS350/A1 = IF TOSS3503 EQ 'YY' THEN 'Y' ELSE 'N'; END -* TABLE FILE HTRARGEL <- TABLE Request PRINT CUST_NUM CLNT_NUM HMO_CD SUBACT_NO MBR_END_DT IF CUST_NUM EQ '9999' IF CLNT_NUM NE '9999' IF TOSS350 EQ Y' IF MBR_END_DT GE '&ENDDT' END
23
Confidential, unpublished property of CIGNA. Do not duplicate or distribute. Use and distribution limited solely to authorized personnel. 2010 CIGNA

FOCUS/DB2 Optimization Single DB2 TABLE


FSTRACE Output
(FOC2598) FOCUS IF/WHERE TEST CANNOT BE PASSED TO SQL : TOSS350 (FOC2590) AGGREGATION NOT DONE FOR THE FOLLOWING REASON: (FOC2596) ONE OR MORE EXPRESSION(S) CAN NOT BE TRANSLATED TO SQL SELECT T1."CUST_NUM",T1."CLNT_NUM",T1."HMO_CD",T1."SUBACT_NO", T1."MBR_END_DT" FROM "WINDSOR2_DB2P"."GHTR"."ARGUS_ELIGIBILITY" T1 WHERE (T1."MBR_END_DT" >= '2008-01-01') AND (T1."CLNT_NUM" <> '9999') AND (T1."CUST_NUM" = '9999') FOR FETCH ONLY;

FSTRACE Translation

 Record Selection Failed:  Aggregation Failed:

(FOC2598) FOCUS IF/WHERE TEST CANNOT BE PASSED TO SQL

: TOSS350

(FOC2590) AGGREGATION NOT DONE FOR THE FOLLOWING REASON: (FOC2596) ONE OR MORE EXPRESSION(S) CAN NOT BE TRANSLATED TO SQL

 The SETs Passed: WHERE

(T1."MBR_END_DT" >= '2008-01-01')

24
Confidential, unpublished property of CIGNA. Do not duplicate or distribute. Use and distribution limited solely to authorized personnel. 2010 CIGNA

FOCUS/DB2 Optimization Single DB2 TABLE


Original FOCEXEC
DEFINE FILE HTRARGEL <- DEFINEs ACCT/A4 = EDIT(SUBACT_NO,'9999$$'); TOSS3501/A1 = IF HMO_CD EQ '200' THEN 'Y' ELSE 'N'; TOSS3502/A1 = IF ACCT FROM '0400' TO '0499' THEN 'Y' ELSE IF ACCT FROM '4800' TO '4999' THEN 'Y' ELSE 'N'; TOSS3503/A2 = TOSS3501|TOSS3502; TOSS350/A1 = IF TOSS3503 EQ 'YY' THEN 'Y' ELSE 'N'; END -* TABLE FILE HTRARGEL <- TABLE PRINT CUST_NUM CLNT_NUM HMO_CD SUBACT_NO MBR_END_DT IF CUST_NUM EQ '9999' IF CLNT_NUM NE '9999' IF TOSS350 EQ Y FIELD not translated to SQL IF MBR_END_DT GE '&ENDDT' END

25
Confidential, unpublished property of CIGNA. Do not duplicate or distribute. Use and distribution limited solely to authorized personnel. 2010 CIGNA

FOCUS/DB2 Optimization Single DB2 TABLE


Changes:

 Convert DEFINEs to WHEREs  Make sure that you are using REAL fields
Modified FOCEXEC
DEFINE FILE HTRARGEL ACCT/A4 = EDIT(SUBACT_NO,'9999$$'); END -* TABLE FILE HTRARGEL PRINT CUST_NUM CLNT_NUM HMO_CD SUBACT_NO MBR_END_DT IF CUST_NUM EQ '9999' IF CLNT_NUM NE '9999' -* CHANGE THE DEFINE TO A WHERE WHERE (HMO_CD EQ '200') AND ((ACCT FROM '0400' TO '0499') OR (ACCT FROM '4800' TO '4999')) IF MBR_END_DT GE '&ENDDT' END

26
Confidential, unpublished property of CIGNA. Do not duplicate or distribute. Use and distribution limited solely to authorized personnel. 2010 CIGNA

FOCUS/DB2 Optimization Single DB2 TABLE

FSTRACE Output
(FOC2590) AGGREGATION NOT DONE FOR THE FOLLOWING REASON: (FOC2594) AGGREGATION IS NOT APPLICABLE TO THE VERB USED SELECT T1."CUST_NUM",T1."CLNT_NUM",T1."HMO_CD",T1."SUBACT_NO", T1."MBR_END_DT" FROM "WINDSOR2_DB2P"."GHTR"."ARGUS_ELIGIBILITY" T1 WHERE (T1."MBR_END_DT" >= '2008-01-01') AND (T1."HMO_CD" = '200') AND (T1."CLNT_NUM" <> '9999') AND (T1."CUST_NUM" = '9999') AND (((SUBSTR(T1."SUBACT_NO", 1, 4)) BETWEEN '0400' AND '0499') OR ((SUBSTR(T1."SUBACT_NO", 1, 4)) BETWEEN '4800' AND '4999')) FOR FETCH ONLY;

27
Confidential, unpublished property of CIGNA. Do not duplicate or distribute. Use and distribution limited solely to authorized personnel. 2010 CIGNA

FOCUS/DB2 Example: Multiple TABLEs

CIGNA and the Tree of Life logo are registered service marks of CIGNA Intellectual Property, Inc., licensed for use by CIGNA Corporation and its operating subsidiaries. All products and services are provided exclusively by such operating subsidiaries and not by CIGNA Corporation. Such operating subsidiaries include International Rehabilitation Associates, Inc. (Intracorp), CIGNA Behavioral Health, Inc., vielife Limited, Connecticut General Life Insurance Company and HMO subsidiaries of CIGNA Health Corporation. 000000 00/09 2010 CIGNA
Confidential, unpublished property of CIGNA. Do not duplicate or distribute. Use and distribution limited solely to authorized personnel. 2009 CIGNA

FOCUS/DB2 Optimization Multiple DB2 TABLEs


JOIN Code:
JOIN NDC_NUM IN HTRACLM TO ALL NDC_NUM IN HTRNDC AS JOIN1 END JOIN CUST_NUM AND CLNT_NUM AND MBR_NO IN HTRACLM TO CUST_NUM AND CLNT_NUM AND MBR_NO IN HTRARGEL AS JOIN2 END JOIN CLM_NUM IN HTRACLM TO CLM_NUM IN HTRCLSTF AS JOIN3 END

Active JOINs:
? JOIN JOINS CURRENTLY ACTIVE HOST FIELD FILE TAG ---------NDC_NUM HTRACLM CUST_NUM HTRACLM CLM_NUM HTRACLM

CROSSREFERENCE FIELD FILE TAG ---------NDC_NUM HTRNDC CUST_NUM HTRARGEL CLM_NUM HTRCLSTF

AS ALL WH ---- -JOIN1 Y N JOIN2 N N JOIN3 N N

29
Confidential, unpublished property of CIGNA. Do not duplicate or distribute. Use and distribution limited solely to authorized personnel. 2010 CIGNA

FOCUS/DB2 Optimization Multiple DB2 TABLEs


JOIN Structure:

HOST

JOIN1

JOIN2

JOIN3

30
Confidential, unpublished property of CIGNA. Do not duplicate or distribute. Use and distribution limited solely to authorized personnel. 2010 CIGNA

FOCUS/DB2 Optimization Multiple DB2 TABLEs


Access File Descriptions - AFDs
HOST - HTRACLM $$$ CREATED BY AUTODB2 ON 07/29/04 AT 07.38.29 BY XXXX $$$ FILENAME=HTRACLM,SUFFIX=SQLDS,$ SEGNAME='CLAIM',TABLENAME='"GHTR"."CLAIM"', KEYS=01,WRITE=YES,KEYORDER=LOW,$ JOIN1 - HTRNDC $$$ CREATED BY AUTODB2 ON 09/28/04 AT 11.19.52 BY XXXX $$$ FILENAME=HTRNDC,SUFFIX=SQLDS,$ SEGNAME='NDC',TABLENAME='"GHTR"."NDC"', KEYS=01,WRITE=YES,KEYORDER=LOW,$ JOIN2 - HTRARGE $$$ CREATED BY AUTODB2 ON 06/24/04 AT 11.47.33 BY XXXX $$$ FILENAME=HTRARGEL,SUFFIX=SQLDS,$ SEGNAME='ARGUS_EL', TABLENAME='"WINDSOR2_DB2P"."GHTR"."ARGUS_ELIGIBILITY"', KEYS=04,WRITE=YES,KEYORDER=LOW,$ JOIN3 - HTRCLSTF SEGNAME= HTRCLSTF ,TABLENAME= 'GHTR."CLAIM_STAFF", KEYS= 1 ,WRITE= YES ,$

31

Confidential, unpublished property of CIGNA. Do not duplicate or distribute. Use and distribution limited solely to authorized personnel. 2010 CIGNA

FOCUS/DB2 Optimization Multiple DB2 TABLEs


Original FOCEXEC
SET ALL=PASS SET ALL -* DEFINE FILE HTRACLM DEFINEs INGRD_CST_AMT/P9.2=IF CLNT_INGRD_CST_AMT GT 0 THEN CLNT_INGRD_CST_AMT ELSE INGRD_CST_AMT ; DISP_FEE/D9.2=IF CLNT_INGRD_CST_AMT GT 0 THEN CLNT_DISP_FEE_AMT ELSE DISP_FEE_AMT ; TOT_PD_AMT/P9.2=IF CLNT_INGRD_CST_AMT GT 0 THEN CLNT_TOT_PD_AMT ELSE TOT_PD_AMT ; FILL/A10=EDIT(FILL_DT,'9999-99-99') ; PAID/A10=EDIT(PAID_DT,'9999-99-99') ; MBR_NO/A12=IF CUST_NUM NE '0215' THEN MBR_NO ELSE IF NEW_MBR_NO EQ ' ' THEN MBR_NO ELSE NEW_MBR_NO ; EMP_ID/A9=EDIT(MBR_NO,'999999999$$$') ; END -* TABLE FILE HTRACLM TABLE Request LIST MBR_NO EMP_ID FILL_DT PAID_DT RX_ACCT_NUM INGRD_CST_AMT DISP_FEE TOT_PD_AMT CUST_NUM CLNT_NUM BY CLM_NUM BY HIGHEST 1 ARGUS_RUN_DT WHERE RX_ACCT_NUM IN ('3209348') AND (PAID_DT GE '2013-01-01') AND (PAID_DT LT '2018-01-01') AND PLAN_OF_BEN IN ('COMP3') AND FUNDNG_SVC_CD EQ '2' ON TABLE HOLD AS HOLD2 END

32

Confidential, unpublished property of CIGNA. Do not duplicate or distribute. Use and distribution limited solely to authorized personnel. 2010 CIGNA

FOCUS/DB2 Optimization Multiple DB2 TABLEs


FSTRACE Output - #1
(FOC2510) FOCUS-MANAGED JOIN SELECTED FOR FOLLOWING REASON(S): (FOC2519) THE JOINED SEGMENTS RESIDE IN MORE THAN ONE NODE OR SUBSYSTEM (FOC2590) AGGREGATION NOT DONE FOR THE FOLLOWING REASON: (FOC2592) RDBMS-MANAGED JOIN HAS BEEN DISABLED SELECT T1."CLM_NUM",T1."CUST_NUM",T1."CLNT_NUM", T1."RX_ACCT_NUM",T1."PLAN_OF_BEN",T1."MBR_NO", T1."NABP_PHARMCY_NUM",T1."FILL_DT",T1."PAID_DT", T1."COPAY_COIN_AMT",T1."INGRD_CST_AMT",T1."AWP_INGRD_CST_AMT", T1."DISP_FEE_AMT",T1."SALES_TAX_AMT",T1."TOT_PD_AMT", T1."UNC_AMT",T1."NEW_MBR_NO",T1."FUNDNG_SVC_CD" FROM "GHTR"."CLAIM" T1 WHERE (T1."FUNDNG_SVC_CD" = '2') AND (T1."PLAN_OF_BEN" = 'COMP3') AND (T1."PAID_DT" < '2011-01-01') AND (T1."PAID_DT" >= '2006-01-01') AND (T1."RX_ACCT_NUM" = '3209348') FOR FETCH ONLY; SELECT T2."MBR_FRST_NM",T2."MBR_LAST_NM",T2."MBR_BRTH_DT", T2."ARGUS_RUN_DT" FROM "WINDSOR2_DB2P"."GHTR"."ARGUS_ELIGIBILITY" T2 WHERE (T2."CUST_NUM" = ?) AND (T2."CLNT_NUM" = ?) AND (T2."MBR_NO" = ?) FOR FETCH ONLY; SELECT T3."CLNT_INGRD_CST_AMT",T3."CLNT_DISP_FEE_AMT", T3."CLNT_TOT_PD_AMT" FROM GHTR."CLAIM_STAFF" T3 WHERE (T3."CLM_NUM" = ?) FOR FETCH ONLY;
33
Confidential, unpublished property of CIGNA. Do not duplicate or distribute. Use and distribution limited solely to authorized personnel. 2010 CIGNA

FOCUS/DB2 Optimization Multiple DB2 TABLEs


1st Change - AFDs
(FOC2519) THE JOINED SEGMENTS RESIDE IN MORE THAN ONE NODE OR SUBSYSTEM HOST - HTRACLM SEGNAME='CLAIM',TABLENAME='"GHTR"."CLAIM"', KEYS=01,WRITE=YES,KEYORDER=LOW,$ JOIN1 - HTRNDC SEGNAME='NDC',TABLENAME='"GHTR"."NDC"', KEYS=01,WRITE=YES,KEYORDER=LOW,$ JOIN2 - HTRARGE SEGNAME='ARGUS_EL', TABLENAME='"WINDSOR2_DB2P"."GHTR"."ARGUS_ELIGIBILITY"', KEYS=04,WRITE=YES,KEYORDER=LOW,$ JOIN3 - HTRCLSTF SEGNAME= HTRCLSTF ,TABLENAME= 'GHTR."CLAIM_STAFF", KEYORDER=LOW, $ KEYS= 1 ,WRITE= YES ,$

34
Confidential, unpublished property of CIGNA. Do not duplicate or distribute. Use and distribution limited solely to authorized personnel. 2010 CIGNA

FOCUS/DB2 Optimization Multiple DB2 TABLEs


FSTRACE Output - #2
(FOC2510) FOCUS-MANAGED JOIN SELECTED FOR FOLLOWING REASON(S): (FOC2513) OUTER JOIN (ALL=ON or ALL=PASS) CANNOT BE PASSED (FOC2590) AGGREGATION NOT DONE FOR THE FOLLOWING REASON: (FOC2592) RDBMS-MANAGED JOIN HAS BEEN DISABLED SELECT T1."CLM_NUM",T1."CUST_NUM",T1."CLNT_NUM", T1."RX_ACCT_NUM",T1."PLAN_OF_BEN",T1."MBR_NO", T1."NABP_PHARMCY_NUM",T1."FILL_DT",T1."PAID_DT", T1."COPAY_COIN_AMT",T1."INGRD_CST_AMT",T1."AWP_INGRD_CST_AMT", T1."DISP_FEE_AMT",T1."SALES_TAX_AMT",T1."TOT_PD_AMT", T1."UNC_AMT",T1."NEW_MBR_NO",T1."FUNDNG_SVC_CD" FROM "GHTR"."CLAIM" T1 WHERE (T1."FUNDNG_SVC_CD" = '2') AND (T1."PLAN_OF_BEN" = 'COMP3') AND (T1."PAID_DT" < '2011-01-01') AND (T1."PAID_DT" >= '2006-01-01') AND (T1."RX_ACCT_NUM" = '3209348') FOR FETCH ONLY; SELECT T2."MBR_FRST_NM",T2."MBR_LAST_NM",T2."MBR_BRTH_DT", T2."ARGUS_RUN_DT" FROM "GHTR"."ARGUS_ELIGIBILITY" T2 WHERE (T2."CUST_NUM" = ?) AND (T2."CLNT_NUM" = ?) AND (T2."MBR_NO" = ?) FOR FETCH ONLY; SELECT T3."CLNT_INGRD_CST_AMT",T3."CLNT_DISP_FEE_AMT", T3."CLNT_TOT_PD_AMT" FROM GHTR."CLAIM_STAFF" T3 WHERE (T3."CLM_NUM" = ?) FOR FETCH ONLY;

35
Confidential, unpublished property of CIGNA. Do not duplicate or distribute. Use and distribution limited solely to authorized personnel. 2010 CIGNA

FOCUS/DB2 Optimization Multiple DB2 TABLEs


2nd Change ALL Setting
(FOC2513) OUTER JOIN (ALL=ON or ALL=PASS) CANNOT BE PASSED Original Code: SET ALL=PASS Optimized Code: Delete the line or SET ALL=OFF/ON The ALL setting handles missing segment instances in a report.

 OFF = Always tries to Optimizes - DEFAULT  ON = Outer JOIN Missing cross-referenced rows are processed R 7.0.9
SET <SQL engine> SET SQLJOIN OUTER ON/OFF

 PASS = Never Optimizes


36
Confidential, unpublished property of CIGNA. Do not duplicate or distribute. Use and distribution limited solely to authorized personnel. 2010 CIGNA

FOCUS/DB2 Optimization Multiple DB2 TABLEs


FSTRACE Output - #3
(FOC2525) FOREIGN KEY IS NOT A SUPERSET OF PRIMARY KEY FOR SEGMENT: ARGUS_EL (FOC2509) RDBMS-MANAGED JOIN SELECTED BUT RESULTS MAY BE INACCURATE (FOC2524) JOIN TO A UNIQUE SEGMENT DOES NOT COVER ITS PRIMARY KEY (FOC2590) AGGREGATION NOT DONE FOR THE FOLLOWING REASON: (FOC2594) AGGREGATION IS NOT APPLICABLE TO THE VERB USED SELECT T1."CLM_NUM",T1."CUST_NUM",T1."CLNT_NUM", T1."RX_ACCT_NUM",T1."PLAN_OF_BEN",T1."MBR_NO",T1."FILL_DT", T1."PAID_DT",T1."INGRD_CST_AMT",T1."DISP_FEE_AMT", T1."TOT_PD_AMT",T1."NEW_MBR_NO",T1."FUNDNG_SVC_CD", T2."ARGUS_RUN_DT",T3."CLNT_INGRD_CST_AMT", T3."CLNT_DISP_FEE_AMT",T3."CLNT_TOT_PD_AMT" FROM "GHTR"."CLAIM" T1,"GHTR"."ARGUS_ELIGIBILITY" T2,"GHTR"."CLAIM_STAFF" T3 WHERE (T2."CUST_NUM" = T1."CUST_NUM") AND (T2."CLNT_NUM" = T1."CLNT_NUM") AND (T2."MBR_NO" = T1."MBR_NO") AND (T3."CLM_NUM" = T1."CLM_NUM") AND (T1."FUNDNG_SVC_CD" = '2') AND (T1."PLAN_OF_BEN" = 'COMP3') AND (T1."PAID_DT" < '2018-01-01') AND (T1."PAID_DT" >= '2013-01-01') AND (T1."RX_ACCT_NUM" = '3209348') ORDER BY T1."CLM_NUM", T2."ARGUS_RUN_DT" DESC FOR FETCH ONLY;
37
Confidential, unpublished property of CIGNA. Do not duplicate or distribute. Use and distribution limited solely to authorized personnel. 2010 CIGNA

FOCUS/DB2 Optimization Multiple DB2 TABLEs


3rd Change AFD
(FOC2525) FOREIGN KEY IS NOT A SUPERSET OF PRIMARY KEY FOR SEGMENT: ARGUS_EL (FOC2509) RDBMS-MANAGED JOIN SELECTED BUT RESULTS MAY BE INACCURATE (FOC2524) JOIN TO A UNIQUE SEGMENT DOES NOT COVER ITS PRIMARY KEY HOST - HTRACLM SEGNAME='CLAIM',TABLENAME='"GHTR"."CLAIM"', KEYS=01,WRITE=YES,KEYORDER=LOW,$ JOIN1 - HTRNDC SEGNAME='NDC',TABLENAME='"GHTR"."NDC"', KEYS=01,WRITE=YES,KEYORDER=LOW,$ JOIN2 - HTRARGEL SEGNAME='ARGUS_EL', TABLENAME='"GHTR"."ARGUS_ELIGIBILITY"', Too Many Keys Needs to be 02 KEYS=04,WRITE=YES,KEYORDER=LOW,$ JOIN3 - HTRCLSTF SEGNAME= HTRCLSTF ,TABLENAME= GHTR."CLAIM_STAFF", KEYS= 01 ,WRITE= YES , KEYORDER=LOW,$
38
Confidential, unpublished property of CIGNA. Do not duplicate or distribute. Use and distribution limited solely to authorized personnel. 2010 CIGNA

FOCUS/DB2 Optimization Multiple DB2 TABLEs


FSTRACE Output - #4 Optimized
(FOC2590) AGGREGATION NOT DONE FOR THE FOLLOWING REASON: (FOC2594) AGGREGATION IS NOT APPLICABLE TO THE VERB USED SELECT T1."CLM_NUM",T1."CUST_NUM",T1."CLNT_NUM", T1."RX_ACCT_NUM",T1."PLAN_OF_BEN",T1."MBR_NO",T1."FILL_DT", T1."PAID_DT",T1."INGRD_CST_AMT",T1."DISP_FEE_AMT", T1."TOT_PD_AMT",T1."NEW_MBR_NO",T1."FUNDNG_SVC_CD", T2."ARGUS_RUN_DT",T3."CLNT_INGRD_CST_AMT", T3."CLNT_DISP_FEE_AMT",T3."CLNT_TOT_PD_AMT" FROM "GHTR"."CLAIM" T1,"GHTR"."ARGUS_ELIGIBILITY" T2,"GHTR"."CLAIM_STAFF" T3 WHERE (T2."CUST_NUM" = T1."CUST_NUM") AND (T2."CLNT_NUM" = T1."CLNT_NUM") AND (T2."MBR_NO" = T1."MBR_NO") AND (T3."CLM_NUM" = T1."CLM_NUM") AND (T1."FUNDNG_SVC_CD" = '2') AND (T1."PLAN_OF_BEN" = 'COMP3') AND (T1."PAID_DT" < '2018-01-01') AND (T1."PAID_DT" >= '2013-01-01') AND (T1."RX_ACCT_NUM" = '3209348') ORDER BY T1."CLM_NUM", T2."ARGUS_RUN_DT" DESC FOR FETCH ONLY;

39
Confidential, unpublished property of CIGNA. Do not duplicate or distribute. Use and distribution limited solely to authorized personnel. 2010 CIGNA

FOCUS/DB2 & FOCUS Optimization Documentation

FOCUS Documentation is Available at: http://documentation.informationbuilders.com/masterindex/doc.asp

 Current FOCUS/DB2 Documentation:


FOCUS for S/390 Relational Data Adapter - Users Manual - Version 7.2 Document Number: DN1001155.1002

 Current Optimization Documentation:


FOCUS for S/390 PowerBook - Version 7.0 Document Number: DN1001134.0401

40
Confidential, unpublished property of CIGNA. Do not duplicate or distribute. Use and distribution limited solely to authorized personnel. 2010 CIGNA

Questions & Answers

CIGNA and the Tree of Life logo are registered service marks of CIGNA Intellectual Property, Inc., licensed for use by CIGNA Corporation and its operating subsidiaries. All products and services are provided exclusively by such operating subsidiaries and not by CIGNA Corporation. Such operating subsidiaries include International Rehabilitation Associates, Inc. (Intracorp), CIGNA Behavioral Health, Inc., vielife Limited, Connecticut General Life Insurance Company and HMO subsidiaries of CIGNA Health Corporation. 000000 00/09 2010 CIGNA
Confidential, unpublished property of CIGNA. Do not duplicate or distribute. Use and distribution limited solely to authorized personnel. 2009 CIGNA

Potrebbero piacerti anche