Relational Efficiencies Renee Teatro June 2008. Relational Efficiencies Agenda  Optimization Overview  JOIN Scenarios  Sort Scenarios  Aggregation.

Slides:



Advertisements
Similar presentations
Debugging ACL Scripts.
Advertisements

FOCUS to DB2 By: Meadow Heath.
1 That’s Not a Date-Time Datatype, Is It? Renee Teatro Information Builders Information Builders Summit 2006 User Conference April 2006.
1 Noreen Redden FOCUS Users of New England 2012 MFD_PROFILE PROFILE for Your Synonym:
Copyright 2007, Information Builders. Slide 1 Relational Efficiencies: Part II Overview and JOIN / Sort Scenarios Renee Teatro Information Builders.
Copyright 2007, Information Builders. Slide 1 Walter Brengel Information Builders New Jersey User Forum – June 2008 FOCUS to SQL DeMystified.
McGyver for Dynamic Subtotals/Subfoots Presented by David Smith of Brinker International.
Acknowledgments Byron Bush, Scott S. Hilpert and Lee, JeongKyu
1 Copyright 2007, Information Builders. Slide 1 Nat Poe WebFOCUS Debugging Techniques.
Copyright 2007, Information Builders. Slide 1 Relational Efficiencies: Part III Overview and Aggregation / Selection Scenarios Renee Teatro Information.
Chapter 5 Types. 5-2 Topics in this Chapter Values vs. Variables Types vs. Representations Type Definition Operators Type Generators SQL Facilities.
Introduction to Structured Query Language (SQL)
Introduction to Structured Query Language (SQL)
Introduction to Structured Query Language (SQL)
INFORMATION TECHNOLOGY IN BUSINESS AND SOCIETY SESSION 16 – SQL SEAN J. TAYLOR.
Enhancements to the GROUP BY Clause Fresher Learning Program January, 2012.
Database Programming Sections 5– GROUP BY, HAVING clauses, Rollup & Cube Operations, Grouping Set, Set Operations 11/2/10.
ASP.NET Programming with C# and SQL Server First Edition
Relational DBs and SQL Designing Your Web Database (Ch. 8) → Creating and Working with a MySQL Database (Ch. 9, 10) 1.
Chapter 10 Queries and Updating Part C. SQL Copyright 2005 Radian Publishing Co.
Chapter 3 Single-Table Queries
SQL/lesson 2/Slide 1 of 45 Retrieving Result Sets Objectives In this lesson, you will learn to: * Use wildcards * Use the IS NULL and IS NOT NULL keywords.
Tips n Techniques Jenny Lalik. Report Styling Enhancements for 7.7  Accordion By Row  Excel 2007 Output Format  Hide Null Across Columns  Pass dates.
Views: Limiting Access to Data A view is a named select statement that is stored in a database as an object. It allows you to view a subset of rows or.
CHAPTER:14 Simple Queries in SQL Prepared By Prepared By : VINAY ALEXANDER ( विनय अलेक्सजेंड़र ) PGT(CS),KV JHAGRAKHAND.
Copyright 2007, Information Builders. Slide 1 Relational Efficiencies: Part I Renee Teatro Information Builders.
SQL/Lesson 4/Slide 1 of 45 Using Subqueries and Managing Databases Objectives In this lesson, you will learn to: *Use subqueries * Use subqueries with.
1 Single Table Queries. 2 Objectives  SELECT, WHERE  AND / OR / NOT conditions  Computed columns  LIKE, IN, BETWEEN operators  ORDER BY, GROUP BY,
Data Management Console Synonym Editor
Copyright  Oracle Corporation, All rights reserved. Writing Basic SQL Statements.
7 1 Chapter 7 Introduction to Structured Query Language (SQL) Database Systems: Design, Implementation, and Management, Seventh Edition, Rob and Coronel.
Oracle DML Dr. Bernard Chen Ph.D. University of Central Arkansas.
Tips n Techniques Jenny Lalik. Report Styling Enhancements for 7.7  Accordion By Row  Excel 2007 Output Format  Hide Null Across Columns  Pass dates.
6 1 Lecture 8: Introduction to Structured Query Language (SQL) J. S. Chou, P.E., Ph.D.
Dynamic Programming with PHP (mktime), Cookies, SQL, Authentication.
Database structure and space Management. Database Structure An ORACLE database has both a physical and logical structure. By separating physical and logical.
© 2006 Cisco Systems, Inc. All rights reserved.1 Connection 7.0 Serviceability Reports Todd Blaisdell.
Database Systems Design, Implementation, and Management Coronel | Morris 11e ©2015 Cengage Learning. All Rights Reserved. May not be scanned, copied or.
Queries SELECT [DISTINCT] FROM ( { }| ),... [WHERE ] [GROUP BY [HAVING ]] [ORDER BY [ ],...]
Network Analyzer :- Introduction to Wireshark. What is Wireshark ? Ethereal Formerly known as Ethereal GUINetwork Protocol Analyzer Wireshark is a GUI.
Agenda Positional Parameters / Continued... Command Substitution Bourne Shell / Bash Shell / Korn Shell Mathematical Expressions Bourne Shell / Bash Shell.
1 Copyright © Oracle Corporation, All rights reserved. Writing Basic SQL SELECT Statements.
CS 111 – Nov. 8 Databases Database Management Systems (DBMS) Structured Query Language (SQL) Commitment –Please review sections 9.1 – 9.2.
A Guide to SQL, Eighth Edition Chapter Four Single-Table Queries.
Copyright 2007, Information Builders. Slide 1 TABLE FILE: The Basics Noreen Redden FOCWizard June, 2008.
5 Copyright © 2008, Oracle. All rights reserved. Testing and Validating a Repository.
SQL: Structured Query Language It enables to create and operate on relational databases, which are sets of related information stored in tables. It is.
Database Systems, 8 th Edition SQL Performance Tuning Evaluated from client perspective –Most current relational DBMSs perform automatic query optimization.
CSC314 DAY 8 Introduction to SQL 1. Chapter 6 © 2013 Pearson Education, Inc. Publishing as Prentice Hall SQL OVERVIEW  Structured Query Language  The.
4 - Conditional Control Structures CHAPTER 4. Introduction A Program is usually not limited to a linear sequence of instructions. In real life, a programme.
MySQL Tutorial. Databases A database is a container that groups together a series of tables within a single structure Each database can contain 1 or more.
Session HR Query Builder Basics. Presenters Tabitha Conwell Debbie Kilbane
COMP234 – Perl SQL. SQL Syntax Keywords upper case: CREATE TABLE English like syntax Multi-word verbs –INSERT INTO Parentheses and other syntactical guides.
Oracle 10g Retrieving Data Using the SQL SELECT Statement.
1 Section 3 - Select Statement u The Select statement allows you to... –Display Data –Specify Selection Criteria –Sort Data –Group Data for reporting –Use.
Retrieving Information Pertemuan 3 Matakuliah: T0413/Current Popular IT II Tahun: 2007.
Copyright س Oracle Corporation, All rights reserved. 1 Writing Basic SQL Statements.
In this session, you will learn to:
Basic select statement
Prof: Dr. Shu-Ching Chen TA: Yimin Yang
Prof: Dr. Shu-Ching Chen TA: Hsin-Yu Ha
Chapter 4 Summary Query.
Prof: Dr. Shu-Ching Chen TA: Haiman Tian
Reporting Aggregated Data Using the Group Functions
Contents Preface I Introduction Lesson Objectives I-2
Section 4 - Sorting/Functions
Reporting Aggregated Data Using the Group Functions
Reporting Aggregated Data Using the Group Functions
Presentation transcript:

Relational Efficiencies Renee Teatro June 2008

Relational Efficiencies Agenda  Optimization Overview  JOIN Scenarios  Sort Scenarios  Aggregation Scenarios  Selection Scenarios

Relational Efficiencies: Optimization Overview Optimization Hierarchy JOIN SORT AGGREGATION If the JOIN optimization fails, so will the SORT and AGGREGATION. If the SORT optimization fails, so will AGGREGATION. AGGREGATION will occur only if JOIN and SORT operations were optimized (and AGGREGATION requested).

 SET TRACEON=component//destination  Component  SQLDI - FSTRACE - All Adapter-RDBMS activity  SQLAGGR - FSTRACE3 - Optimization messages  STMTRACE - FSTRACE4 - SQL only  SQLCALL - commands and data exchange between the physical and the logical layers of the data adapter  Destination  FSTRACE - allocation for the ddname of FSTRACE  CLIENT - displays client session to the screen NOTE: Make sure to SET TRACEUSER=OFF afterwards Relational Efficiencies: Optimization Overview Data Adapter TRACE Facility

Relational Efficiencies: Optimization Overview Data Adapter TRACE Facility SET TRACEOFF=ALL SET TRACEUSER=CLIENT SET TRACEON=SQLAGGR//CLIENT SET TRACEON=STMTRACE//CLIENT SET TRACESTAMP=OFF SET XRETRIEVAL=OFF TABLE FILE … SET XRETRIEVAL=[ON | OFF]  ON – the data adapter sends the request to the RDBMS and it processes the request  OFF – the data adapter attempts to optimize the request and trace output is generated but no RDBMS processing is done

 Interface attempts to generate ONE SELECT statement to JOIN all tables  Applies to dynamic or embedded JOINs  One OPEN cursor operation  JOIN optimized more readily by RDBMS  An optimized JOIN enables sorts and aggregations to be passed  Limits interface RDBMS communications  If JOIN is not passed to RDBMS  Termed: FOCUS-managed JOIN  One SELECT statement for EACH table Relational Efficiencies: JOIN Scenarios JOIN Optimization

JOIN F1SSN IN TABLE1 TO F2SSN IN TABLE2 TABLE FILE TABLE1 PRINT F2SSN END Optimized JOIN: SELECT T1.F1SSN,T2.F2SSN FROM PROD.TABLE1 T1, PROD.TABLE2 T2 WHERE (T2.F2SSN = T1.F1SSN) FOR FETCH ONLY; Non-Optimized JOIN: (FOC2510) FOCUS-MANAGED JOIN SELECTED FOR FOLLOWING REASON(S): SELECT T1.F1SSN FROM PROD.TABLE1 T1 FOR FETCH ONLY; SELECT T2.F2SSN FROM PROD.TABLE2 T2 WHERE (T2.F2SSN = ?) FOR FETCH ONLY; Relational Efficiencies: JOIN Scenarios Optimized JOIN vs. Non-Optimized JOIN

Relational Efficiencies: JOIN Scenarios Performance related to KEYS attribute JOIN CLEAR * JOIN AU_ID IN AUTHORS TO ALL AU_ID IN TITLEAUTHOR AS J1 TABLE FILE AUTHORS SUM TITLE_ID AU_ORD ROYALTYPER BY AU_LNAME BY AU_FNAME BY AU_ID END FOC FOCUS-MANAGED JOIN SELECTED FOR FOLLOWING REASON(S): FOC A SEGMENT IN THE STRUCTURE IS NON-KEYED: : AUTHORS FOC FST. OR LST. WHERE SORT FIELDS DO NOT COVER KEY FOC AGGREGATION NOT DONE FOR THE FOLLOWING REASON: FOC RDBMS-MANAGED JOIN HAS BEEN DISABLED SELECT T1."au_id",T1."au_lname",T1."au_fname" FROM pubs.dbo.authors T1; SELECT T2."au_id",T2."title_id",T2."au_ord",T2."royaltyper" FROM pubs.dbo.titleauthor T2 WHERE (T2."au_id" = ?) ORDER BY T2."au_id",T2."title_id";

Relational Efficiencies JOIN: Performance related to KEYS attribute SEGNAME=AUTHORS, TABLENAME=pubs.dbo.authors, CONNECTION=SQLSRV, KEYS=0,$ *** Change to KEYS=1 SEGNAME=TITLEAUTHOR, TABLENAME=pubs.dbo.titleauthor, CONNECTION=SQLSRV, KEYS=2,$ AGGREGATION DONE... SELECT T1."au_lname",T1."au_fname",T1."au_id", MAX(T2."title_id"), SUM(T2."au_ord"), SUM(T2."royaltyper") FROM pubs.dbo.authors T1,pubs.dbo.titleauthor T2 WHERE (T2."au_id" = T1."au_id") GROUP BY T1."au_lname",T1."au_fname",T1."au_id" ORDER BY T1."au_lname",T1."au_fname",T1."au_id"; The.acx (ACCESS FILE DESCRIPTION) should have KEYS= with a NON-ZERO value to indicate the PRIMARY KEY for the table in question. The PRIMARY KEY is made up of the FIRST n fields in the.mas (MASTER FILE DESCRIPTION).

Relational Efficiencies: JOIN Scenarios Performance related to KEYS attribute Another MFD/AFD by the same name higher in the application path list with the SAME name as one of the JOINed tables. WHENCE filename MASTER WHENCE AUTHORS MASTER WHENCE TITLEAUTHOR MASTER C:\ibi\apps\sqlsrv\authors.mas C:\ibi\apps\summit08\titleauthor.mas APP PREPENDPATH summit08 WHENCE AUTHORS MASTER WHENCE TITLEAUTHOR MASTER C:\ibi\apps\summit08\authors.mas C:\ibi\apps\summit08\titleauthor.mas

Relational Efficiencies : JOIN Scenarios JOIN: Performance related to MULTI-PATH SET TRACEOFF=ALL SET TRACEUSER=CLIENT SET TRACEON=SQLAGGR//CLIENT SET TRACEON=STMTRACE//CLIENT SET TRACESTAMP=OFF SET XRETRIEVAL=OFF SET MULTIPATH=COMPOUND JOIN CLEAR * JOIN TITLE_ID IN TITLEAUTHOR TO ALL TITLE_ID IN TITLES AS J1 JOIN TITLE_ID IN TITLEAUTHOR TO ALL TITLE_ID IN ROYSCHED AS J2 CHECK FILE TITLEAUTHOR PICT TABLE FILE TITLEAUTHOR PRINT TITLE AU_ORD ROYALTYPER PRICE LORANGE HIRANGE BY TITLE_ID END

Relational Efficiencies : JOIN Scenarios JOIN: Performance related to MULTI-PATH - Optimized (FOC2510) FOCUS-MANAGED JOIN SELECTED FOR FOLLOWING REASON(S): (FOC2512) MULTI-PATH REQUEST (FOC2590) AGGREGATION NOT DONE FOR THE FOLLOWING REASON: (FOC2592) RDBMS-MANAGED JOIN HAS BEEN DISABLED Prior Behavior  Adjust JOIN field(s) to create a SINGLE PATH structure  SQL Passthru  Create relational VIEW on RDBMS – single segment MFD  Create HOLD files & JOIN HOLD files vs. FOCUS-managed JOIN FOC AGGREGATION NOT DONE FOR THE FOLLOWING REASON: FOC AGGREGATION IS NOT APPLICABLE TO THE VERB USED SELECT T1."title_id",T1."au_ord",T1."royaltyper",T2."lorange", T2."hirange",T3."title",T3."price" FROM pubs.dbo.titleauthor T1, pubs.dbo.roysched T2,pubs.dbo.titles T3 WHERE (T2."title_id" = T1."title_id") AND (T3."title_id" = T1."title_id") ORDER BY T1."title_id";

Relational Efficiencies : JOIN Scenarios JOIN: Performance related to MULTI-PATH CHECK FILE TITLEAUTHOR PICTURE

Relational Efficiencies : JOIN Scenarios JOIN: Performance related to MULTI-PATH JOIN CLEAR * JOIN TITLE_ID IN TITLEAUTHOR TO ALL TITLE_ID IN TITLES AS J1 JOIN TITLES.TITLE_ID IN TITLEAUTHOR TO ALL TITLE_ID IN ROYSCHED AS J2 Benefits of Single Path: Avoid encounter with FOC030 (FOC030) ALL VERB OBJECTS MUST BE IN THE SAME PATH AS THEIR SORT FIELDS

Relational Efficiencies : JOIN Scenarios JOIN: Performance related to MULTI-PATH JOIN CLEAR * JOIN TITLE_ID IN TITLEAUTHOR TO TITLE_ID IN TITLES AS J1 JOIN TITLE_ID IN TITLEAUTHOR TO ALL TITLE_ID IN ROYSCHED AS J2

Relational Efficiencies : JOIN Scenarios JOIN: Multiplicative Effect JOIN CLEAR * JOIN TITLE_ID IN TITLES TO ALL TITLE_ID IN TITLEAUTHOR AS J1 TABLE FILE TITLES SUM ROYALTY AU_ORD ROYALTYPER BY TITLE BY TITLE_ID END FOC INTERFACE-MANAGED NATIVE JOIN SELECTED FOR THE FOLLOWING REASON: FOC MULTIPLICATIVE EFFECT WOULD ENSUE FOC AGGREGATION NOT DONE FOR THE FOLLOWING REASON: FOC RDBMS-MANAGED JOIN HAS BEEN DISABLED SELECT T1."title_id",T1."title",T1."royalty",T2."au_id", T2."title_id",T2."au_ord",T2."royaltyper" FROM pubs.dbo.titles T1,pubs.dbo.titleauthor T2 WHERE (T2."title_id" = T1."title_id") ORDER BY T1."title_id",T2."au_id",T2."title_id";

Relational Efficiencies : JOIN Scenarios JOIN: Multiplicative Effect JOIN CLEAR * JOIN TITLE_ID IN TITLES TO ALL TITLE_ID IN TITLEAUTHOR AS J1 TABLE FILE TITLES SUM MAX.ROYALTY AU_ORD ROYALTYPER BY TITLE BY TITLE_ID END AGGREGATION DONE... SELECT T1."title",T1."title_id", MAX(T1."royalty"), SUM(T2."au_ord"), SUM(T2."royaltyper") FROM pubs.dbo.titles T1, pubs.dbo.titleauthor T2 WHERE (T2."title_id" = T1."title_id") GROUP BY T1."title",T1."title_id" ORDER BY T1."title", T1."title_id";

Relational Efficiencies: Sort Scenarios Sort Management by the RDBMS

 BY and ACROSS equate to SQL ORDER BY clause  BY / FOR ROWS OVER syntax will translate JOIN TITLE_ID IN TITLES TO ALL TITLE_ID IN ROYSCHED AS J1 TABLE FILE TITLES SUM ADVANCE LORANGE HIRANGE BY PUB_ID FOR TITLE_ID 'PS2091' OVER 'PS2106' OVER 'MC3021' OVER 'BU1111' OVER 'PC8888' END AGGREGATION DONE... SELECT T1."pub_id",T1."title_id", SUM(T1."advance"), SUM(T2."lorange"), SUM(T2."hirange") FROM pubs.dbo.titles T1, pubs.dbo.roysched T2 WHERE (T2."title_id" = T1."title_id") AND (T1."title_id" IN('BU1111', 'MC3021', 'PC8888', 'PS2091', 'PS2106')) GROUP BY T1."pub_id",T1."title_id" ORDER BY T1."pub_id",T1."title_id";

Relational Efficiencies: Sort Scenarios Sort Management by FOCUS / WebFOCUS

DEFINE FILE TITLES SHORT_TITLE/A10=EDIT(TITLE,' '); PRICE_INC/P21.2=PRICE *.10; END TABLE FILE TITLES PRINT PRICE BY TITLE_ID BY PRICE_INC -*BY SHORT_TITLE END FOC AGGREGATION NOT DONE FOR THE FOLLOWING REASON: FOC AGGREGATION IS NOT APPLICABLE TO THE VERB USED SELECT T1."title_id",T1."price" FROM pubs.dbo.titles T1; FOC AGGREGATION NOT DONE FOR THE FOLLOWING REASON: FOC AGGREGATION IS NOT APPLICABLE TO THE VERB USED SELECT T1."title_id",T1."title",T1."price" FROM pubs.dbo.titles T1;

Relational Efficiencies: Sort Scenarios Sort Management by the RDBMS DEFINE FILE TITLES SHORT_TITLE/A10=EDIT(TITLE,' '); PRICE_INC/P21.2=PRICE *.10; END TABLE FILE TITLES SUM PRICE BY TITLE_ID BY PRICE_INC -*BY SHORT_TITLE END AGGREGATION DONE... SELECT T1."title_id",(T1."price" *.1), SUM(T1."price") FROM pubs.dbo.titles T1 GROUP BY T1."title_id",(T1."price" *.1) ORDER BY T1."title_id",(T1."price" *.1); AGGREGATION DONE... SELECT T1."title_id",(SUBSTRING(T1."title", 1, 10)), SUM(T1."price") FROM pubs.dbo.titles T1 GROUP BY T1."title_id", (SUBSTRING(T1."title", 1, 10)) ORDER BY T1."title_id", (SUBSTRING(T1."title", 1, 10));

Relational Efficiencies: Sort Scenarios Sort Management by the RDBMS DEFINE FILE TITLES MONTH_COMPONENTA/A3=HNAME(PUBDATE,'MONTH','A3'); MONTH_COMPONENTI/I2=HPART(PUBDATE,'MONTH','I2'); END TABLE FILE TITLES SUM PRICE -*BY MONTH_COMPONENTA BY MONTH_COMPONENTI -*BY PUBDATE END Tracing via DEFINE field MONTH_COMPONENTI or MONTH_COMPONENTA sort: FOC AGGREGATION NOT DONE FOR THE FOLLOWING REASON: FOC CANNOT AGGREGATE BY NON-SQLIZABLE SORT KEY: MONTH_COMPONENTI SELECT T1."price",T1."pubdate" FROM pubs.dbo.titles T1; Tracing via REAL field ORD_DATE sort: AGGREGATION DONE... SELECT T1."pubdate", SUM(T1."price") FROM pubs.dbo.titles T1 GROUP BY T1."pubdate" ORDER BY T1."pubdate";

Relational Efficiencies: Sort Scenarios Sort Management by the RDBMS TABLE FILE TITLES SUM PRICE -*BY MONTH_COMPONENTA BY MONTH_COMPONENTI -*BY PUBDATE END AGGREGATION DONE... SELECT T1."pubdate", SUM(T1."price") FROM pubs.dbo.titles T1 GROUP BY T1."pubdate" ORDER BY T1."pubdate"; FILENAME=TITLES, SUFFIX=SQLMSS, $ SEGMENT=TITLES, SEGTYPE=S0, $ FIELDNAME=TITLE_ID, ALIAS=title_id, USAGE=A6, ACTUAL=A6, $ FIELDNAME=TITLE, ALIAS=title, USAGE=A80, ACTUAL=A80, $ … FIELDNAME=PUBDATE, ALIAS=pubdate, USAGE=HYYMDs, ACTUAL=HYYMDs, $ FIELDNAME=MONTH_COMPONENTI,ALIAS=pubdate,USAGE=M,ACTUAL=DATE, $ FIELDNAME=MONTH_COMPONENTA,ALIAS=pubdate,USAGE=MT,ACTUAL=DATE, $

 From a performance standpoint, consider using TABLEF instead of TABLE for requests that you know are being returned in the requested sort order. This will free FOCUS / WebFOCUS from having to verify the sort order by loading its internal matrix. FOCUS / WebFOCUS will act directly on the data returned by the RDBMS.  ACROSS phrases are not supported.  It must be verified that an ORDER BY statement has been generated in the SQL for the correct columns prior to using TABLEF.  Multi-verb requests are not supported.  RETYPE is not available.  TABLEF can hold locks on data pages until the data adapter issues a COMMIT (usually when the report displays). Locks may prevent access to the data by other applications. (online core FOCUS)  Certain prefix operators are not available (TOT., PCT.)  Computes that use prefix operators are not supported. Relational Efficiencies: Sort Scenarios Using TABLEF

 Verbs: SUM, COUNT, WRITE  Direct operators: MIN., MAX., AVE.  Aggregating DEFINEd fields:  Constant DEFINEd fields translated with CNT. The following defined expressions can be translated Type of expressions Expression components Examples Arithmetic Valued (Expressions that return a single number) Character String Valued (Expressions that return a character string) Real fields of datatype I, P, D, or F Numeric constants Arithmetic operators (+, -, *, / ) Real fields of datatype A String constants Concatenation operator (I) EDIT of alphanumeric fields DEFINE FILE ORAEMP NEW_SAL/D12.2=(CSAL * 0.10) + CSAL ; END DEFINE FILE ORAEMP NAME/A18=EDIT(FN,‘9.$’)|LN; END Relational Efficiencies: Aggregation Scenarios Translatable Aggregation

 All IF or WHERE statements in the request are translated to SQL WHERE clause.  FOCUS / WebFOCUS must generate a single SQL statement  Only these aggregation commands or operators are used: SUM, COUNT, WRITE, MIN., MAX., AVE., SUM., DST., CNT. or CNT.DST. Relational Efficiencies: Aggregation Scenarios Key Points for Aggregation Translation

Relational Efficiencies: Aggregation Scenarios SUM on ALPHANUMERIC Field JOIN STOR_ID IN STORES TO ALL STOR_ID IN SALES AS J1 TABLE FILE STORES SUM STOR_NAME QTY ORD_DATE TITLE_ID BY STOR_ID END FOC AGGREGATION NOT DONE FOR THE FOLLOWING REASON: FOC AVE ON ALPHA, DATE OR DATETIME CANNOT BE AGGREGATED SELECT T1."stor_id",T1."stor_name",T2."stor_id",T2."ord_num", T2."title_id",T2."ord_date",T2."qty" FROM pubs.dbo.stores T1, pubs.dbo.sales T2 WHERE (T2."stor_id" = T1."stor_id") ORDER BY T1."stor_id",T2."stor_id",T2."ord_num",T2."title_id";

Relational Efficiencies: Aggregation Scenarios SUM on ALPHANUMERIC Field JOIN STOR_ID IN STORES TO ALL STOR_ID IN SALES AS J1 TABLE FILE STORES SUM STOR_NAME QTY MAX.ORD_DATE MIN.TITLE_ID BY STOR_ID -*BY TITLE_ID -*BY ORD_DATE END FOC AGGREGATION DONE BUT MAY PRODUCE INCONSISTENT RESULTS FOC OVERFLOW MAY OCCUR WHEN SUMMING AN I2 FIELD WITH USAGE I, D OR P SELECT T1."stor_id", MAX(T1."stor_name"), SUM(T2."qty"), MAX(T2."ord_date"), MIN(T2."title_id") FROM pubs.dbo.stores T1, pubs.dbo.sales T2 WHERE (T2."stor_id" = T1."stor_id") GROUP BY T1."stor_id" ORDER BY T1."stor_id"; FOC AGGREGATION DONE BUT MAY PRODUCE INCONSISTENT RESULTS FOC OVERFLOW MAY OCCUR WHEN SUMMING AN I2 FIELD WITH USAGE I, D OR P SELECT T1."stor_id",T2."title_id",T2."ord_date", MAX(T1."stor_name"), SUM(T2."qty") FROM pubs.dbo.stores T1, pubs.dbo.sales T2 WHERE (T2."stor_id" = T1."stor_id") GROUP BY T1."stor_id",T2."title_id",T2."ord_date" ORDER BY T1."stor_id", T2."title_id",T2."ord_date";

Relational Efficiencies: Aggregation Scenarios IF/WHEREs Translated for Aggregation JOIN STOR_ID IN STORES TO ALL STOR_ID IN SALES AS J1 TABLE FILE STORES SUM QTY BY STOR_ID BY STOR_NAME WHERE STOR_ID GT '7130' WHERE ZIP LIKE '9%' WHERE QTY EQ EDIT('10') -*WHERE QTY GT 10 WHERE PAYTERM LIKE 'Net %' END FOC FOCUS IF/WHERE TEST CANNOT BE PASSED TO SQL : WHERE expression FOC AGGREGATION NOT DONE FOR THE FOLLOWING REASON: FOC ONE OR MORE EXPRESSION(S) CAN NOT BE TRANSLATED TO SQL SELECT T1."stor_id",T1."stor_name",T1."zip",T2."qty", T2."payterms" FROM pubs.dbo.stores T1,pubs.dbo.sales T2 WHERE (T2."stor_id" = T1."stor_id") AND (T1."zip" LIKE '9%') AND (T1."stor_id" > '7130') AND (T2."payterms" LIKE 'Net %') ORDER BY T1."stor_id",T1."stor_name"; … WHERE (T2."stor_id" = T1."stor_id") AND (T1."zip" LIKE '9%') AND (T1."stor_id" > '7130') AND (T2."payterms" LIKE 'Net %') AND (T2."qty" > 10) GROUP BY T1."stor_id",T1."stor_name" ORDER BY T1."stor_id", T1."stor_name";

Relational Efficiencies: Aggregation Scenarios DEFINE Field Logical Expression: Optimized JOIN STOR_ID IN STORES TO ALL STOR_ID IN SALES AS J1 DEFINE FILE STORES LOGICAL_NUM/I1=IF QTY GT 20 THEN 1 ELSE 0; LOGICAL_CHR/A1=IF QTY GT 20 THEN 'Y' ELSE 'N'; END TABLE FILE STORES SUM QTY LOGICAL_NUM -*LOGICAL_CHR BY STOR_ID BY STOR_NAME END FOC AGGREGATION DONE BUT MAY PRODUCE INCONSISTENT RESULTS FOC OVERFLOW MAY OCCUR WHEN SUMMING AN I2 FIELD WITH USAGE I, D OR P SELECT T1."stor_id",T1."stor_name", SUM(T2."qty"), SUM((CASE WHEN (T2."qty" > 20) THEN 1 ELSE 0 END)) FROM pubs.dbo.stores T1,pubs.dbo.sales T2 WHERE (T2."stor_id" = T1."stor_id") GROUP BY T1."stor_id",T1."stor_name" ORDER BY T1."stor_id", T1."stor_name"; Message in earlier releases: (FOC2590) AGGREGATION NOT DONE FOR THE FOLLOWING REASON: (FOC2597) USE OF DEFINE FIELD THAT CANNOT BE AGGREGATED : LOGICAL

User-written subroutines Self-referential expressions EDIT for field format conversions Strong concatenation (II) DECODE function Non-SQL relational operators (INCLUDES, EXCLUDES) FOCUS subroutines (ABS, INT, MAX, MIN, LOG, SQRT) Expressions using fields with ACTUAL=DATE Expressions using Example DEFINE... FNL/I3 = ARGLEN(15,LN,FNL); TABLE... IF FNL LE 6 DEFINE... CPT/I2=CPT+1; TABLE... IF CPT NE 0 WHERE EDIT(ID) GT 20 DEFINE... NAME/A27=FN||(‘ ‘ | LN); TABLE... IF NAME EQ ‘DANIEL VALINO’ DEFINE... DEVISION/A11=DECODE CDIV (‘CORP’ ‘CORPORATE’ ‘NE’ ‘NORTH-EAST’ ELSE ‘NA’); TABLE... IF DIVISION EQ ‘CORPORATE’ OR ‘NORTH-EAST’ IF LN INCLUDES ‘VALINO’ DEFINE... HDAT2/YYMD=HDAT+365; TABLE... IF HDAT2 GT ‘1990/03/01’ WHERE SQRT(CSAL) GT 260 Relational Efficiencies: Selection Scenarios Non-Translatable Screening Conditions

Relational Efficiencies : Selection Scenarios Variable with Subroutine Reference -DEFAULT &EMPVAL='pma42628m'; DEFINE FILE EMPLOYEE EMPTEST/A9=UPCASE(9,'&EMPVAL','A9'); END TABLE FILE EMPLOYEE PRINT JOB_ID JOB_LVL HIRE_DATE BY EMP_ID WHERE EMP_ID EQ UPCASE(9,'&EMPVAL','A9') -*WHERE EMP_ID EQ EMPTEST END FOC FOCUS IF/WHERE TEST CANNOT BE PASSED TO SQL : WHERE expression FOC AGGREGATION NOT DONE FOR THE FOLLOWING REASON: FOC AGGREGATION IS NOT APPLICABLE TO THE VERB USED SELECT T1."emp_id",T1."job_id",T1."job_lvl",T1."hire_date" FROM pubs.dbo.employee T1 ORDER BY T1."emp_id";

Relational Efficiencies : Selection Scenarios Variable with Subroutine Reference -DEFAULT &EMPVAL='pma42628m'; -SET &UPEMPVAL=UPCASE(9,'&EMPVAL.EVAL','A9'); DEFINE FILE EMPLOYEE EMPTEST/A9 WITH EMP_ID='&UPEMPVAL'; END TABLE FILE EMPLOYEE PRINT JOB_ID JOB_LVL HIRE_DATE BY EMP_ID WHERE EMP_ID EQ '&UPEMPVAL' -*WHERE EMP_ID EQ EMPTEST END FOC AGGREGATION NOT DONE FOR THE FOLLOWING REASON: FOC AGGREGATION IS NOT APPLICABLE TO THE VERB USED SELECT T1."emp_id",T1."job_id",T1."job_lvl",T1."hire_date" FROM pubs.dbo.employee T1 WHERE (T1."emp_id" = 'PMA42628M') ORDER BY T1."emp_id";

Relational Efficiencies: Selection Scenarios DATEs DEFINE FILE EMPLOYEE Hire_Year/YY=HPART(HIRE_DATE,'YEAR','YY'); END TABLE FILE EMPLOYEE PRINT COMPUTE NAME/A55=LNAME || ', ' | FNAME | ' ' |MINIT; HIRE_DATE BY LNAME NOPRINT BY FNAME NOPRINT BY MINIT NOPRINT WHERE Hire_Year GE 1990 and Hire_Year LT 1991 END FILENAME=EMPLOYEE, SUFFIX=SQLMSS, $ SEGMENT=EMPLOYEE, SEGTYPE=S0, $ … FIELDNAME=HIRE_DATE,ALIAS=hire_date,USAGE=HYYMDs,ACTUAL=HYYMDs, $ FOC FOCUS IF/WHERE TEST CANNOT BE PASSED TO SQL : Hire_Year FOC AGGREGATION NOT DONE FOR THE FOLLOWING REASON: FOC AGGREGATION IS NOT APPLICABLE TO THE VERB USED SELECT T1."fname",T1."minit",T1."lname",T1."hire_date" FROM pubs.dbo.employee T1 ORDER BY T1."lname",T1."fname",T1."minit";

Relational Efficiencies: Selection Scenarios DATEs TABLE FILE EMPLOYEE PRINT COMPUTE NAME/A55=LNAME || ', ' | FNAME | ' ' |MINIT; HIRE_DATE BY LNAME NOPRINT BY FNAME NOPRINT BY MINIT NOPRINT WHERE Hire_Year GE 1990 and Hire_Year LT 1991 END FILENAME=EMPLOYEE, SUFFIX=SQLMSS, $ SEGMENT=EMPLOYEE, SEGTYPE=S0, $ … FIELDNAME=HIRE_DATE,ALIAS=hire_date,USAGE=HYYMDs,ACTUAL=HYYMDs, $ FIELDNAME=HIRE_YEAR,ALIAS=Hire_Year,USAGE=YY,ACTUAL=DATE, $ FOC AGGREGATION NOT DONE FOR THE FOLLOWING REASON: FOC AGGREGATION IS NOT APPLICABLE TO THE VERB USED SELECT T1."fname",T1."minit",T1."lname",T1."hire_date", T1."Hire_Year" FROM pubs.dbo.employee T1 WHERE (T1."Hire_Year" = ' ') ORDER BY T1."lname",T1."fname",T1."minit";

Relational Efficiencies: Selection Scenarios Case Sensitive/Insensitive Selection: Coming Soon  WebFOCUS / FOCUS Selection values are case sensitive  RDBMS environment could allow for case insensitive selection  Answer set returned by RDBMS could allow for all permutations resulting in case insensitive values  WebFOCUS / FOCUS will reapply selection so that final result will be case sensitive  Workarounds  Direct SQL Passthru  UPCASE both the FIELD and VALUE in WHERE clause  Selection will not be optimized and will impact aggregation if aggregation is part of the request  New feature to allow for user to specify if selection should be case sensitive or case insensitive

Relational Efficiencies

Relational Efficiencies Appendix FILENAME=EMPLOYEE, SUFFIX=SQLMSS, $ SEGMENT=EMPLOYEE, SEGTYPE=S0, $ FIELDNAME=EMP_ID, ALIAS=emp_id, USAGE=A9, ACTUAL=A9, $ FIELDNAME=FNAME, ALIAS=fname, USAGE=A20, ACTUAL=A20, $ FIELDNAME=MINIT, ALIAS=minit, USAGE=A1, ACTUAL=A1, MISSING=ON, $ FIELDNAME=LNAME, ALIAS=lname, USAGE=A30, ACTUAL=A30, $ FIELDNAME=JOB_ID, ALIAS=job_id, USAGE=I6, ACTUAL=I2, $ FIELDNAME=JOB_LVL, ALIAS=job_lvl, USAGE=I6, ACTUAL=I4, MISSING=ON, $ FIELDNAME=PUB_ID, ALIAS=pub_id, USAGE=A4, ACTUAL=A4, $ FIELDNAME=HIRE_DATE, ALIAS=hire_date, USAGE=HYYMDs, ACTUAL=HYYMDs, $ SEGNAME=EMPLOYEE, TABLENAME=pubs.dbo.employee, CONNECTION=SQLSRV, KEYS=1,$

Relational Efficiencies Appendix FILENAME=AUTHORS, SUFFIX=SQLMSS, $ SEGMENT=AUTHORS, SEGTYPE=S0, $ FIELDNAME=AU_ID, ALIAS=au_id, USAGE=A11, ACTUAL=A11, $ FIELDNAME=AU_LNAME, ALIAS=au_lname, USAGE=A40, ACTUAL=A40, $ FIELDNAME=AU_FNAME, ALIAS=au_fname, USAGE=A20, ACTUAL=A20, $ FIELDNAME=PHONE, ALIAS=phone, USAGE=A12, ACTUAL=A12, $ FIELDNAME=ADDRESS, ALIAS=address, USAGE=A40, ACTUAL=A40, MISSING=ON, $ FIELDNAME=CITY, ALIAS=city, USAGE=A20, ACTUAL=A20, MISSING=ON, $ FIELDNAME=STATE, ALIAS=state, USAGE=A2, ACTUAL=A2, MISSING=ON, $ FIELDNAME=ZIP, ALIAS=zip, USAGE=A5, ACTUAL=A5, MISSING=ON, $ FIELDNAME=CONTRACT, ALIAS=contract, USAGE=I11, ACTUAL=I4, $ SEGNAME=AUTHORS, TABLENAME=pubs.dbo.authors, CONNECTION=SQLSRV, KEYS=1,$

Relational Efficiencies Appendix FILENAME=TITLES, SUFFIX=SQLMSS, $ SEGMENT=TITLES, SEGTYPE=S0, $ FIELDNAME=TITLE_ID, ALIAS=title_id, USAGE=A6, ACTUAL=A6, $ FIELDNAME=TITLE, ALIAS=title, USAGE=A80, ACTUAL=A80, $ FIELDNAME=TYPE, ALIAS=type, USAGE=A12, ACTUAL=A12, $ FIELDNAME=PUB_ID, ALIAS=pub_id, USAGE=A4, ACTUAL=A4, MISSING=ON, $ FIELDNAME=PRICE, ALIAS=price, USAGE=P21.4, ACTUAL=P10, MISSING=ON, $ FIELDNAME=ADVANCE, ALIAS=advance, USAGE=P21.4, ACTUAL=P10, MISSING=ON, $ FIELDNAME=ROYALTY, ALIAS=royalty, USAGE=I11, ACTUAL=I4, MISSING=ON, $ FIELDNAME=YTD_SALES, ALIAS=ytd_sales, USAGE=I11, ACTUAL=I4, MISSING=ON, $ FIELDNAME=NOTES, ALIAS=notes, USAGE=A200, ACTUAL=A200, MISSING=ON, $ FIELDNAME=PUBDATE, ALIAS=pubdate, USAGE=HYYMDs, ACTUAL=HYYMDs, $ SEGNAME=TITLES, TABLENAME=pubs.dbo.titles, CONNECTION=SQLSRV, KEYS=1, $

Relational Efficiencies Appendix FILENAME=TITLEAUTHOR, SUFFIX=SQLMSS, $ SEGMENT=TITLEAUTHOR, SEGTYPE=S0, $ FIELDNAME=AU_ID, ALIAS=au_id, USAGE=A11, ACTUAL=A11, $ FIELDNAME=TITLE_ID, ALIAS=title_id, USAGE=A6, ACTUAL=A6, $ FIELDNAME=AU_ORD, ALIAS=au_ord, USAGE=I6, ACTUAL=I4, MISSING=ON, $ FIELDNAME=ROYALTYPER, ALIAS=royaltyper, USAGE=I11, ACTUAL=I4, MISSING=ON, $ SEGNAME=TITLEAUTHOR, TABLENAME=pubs.dbo.titleauthor, CONNECTION=SQLSRV, KEYS=2, $

Relational Efficiencies Appendix FILENAME=ROYSCHED, SUFFIX=SQLMSS, $ SEGMENT=ROYSCHED, SEGTYPE=S0, $ FIELDNAME=TITLE_ID, ALIAS=title_id, USAGE=A6, ACTUAL=A6, $ FIELDNAME=LORANGE, ALIAS=lorange, USAGE=I11, ACTUAL=I4, MISSING=ON, $ FIELDNAME=HIRANGE, ALIAS=hirange, USAGE=I11, ACTUAL=I4, MISSING=ON, $ FIELDNAME=ROYALTY, ALIAS=royalty, USAGE=I11, ACTUAL=I4, MISSING=ON, $ SEGNAME=ROYSCHED, TABLENAME=pubs.dbo.roysched, CONNECTION=SQLSRV, KEYS=1,$

Relational Efficiencies Appendix FILENAME=STORES, SUFFIX=SQLMSS, $ SEGMENT=STORES, SEGTYPE=S0, $ FIELDNAME=STOR_ID, ALIAS=stor_id, USAGE=A4, ACTUAL=A4, $ FIELDNAME=STOR_NAME, ALIAS=stor_name, USAGE=A40, ACTUAL=A40, MISSING=ON, $ FIELDNAME=STOR_ADDRESS, ALIAS=stor_address, USAGE=A40, ACTUAL=A40, MISSING=ON, $ FIELDNAME=CITY, ALIAS=city, USAGE=A20, ACTUAL=A20, MISSING=ON, $ FIELDNAME=STATE, ALIAS=state, USAGE=A2, ACTUAL=A2, MISSING=ON, $ FIELDNAME=ZIP, ALIAS=zip, USAGE=A5, ACTUAL=A5, MISSING=ON, $ SEGNAME=STORES, TABLENAME=pubs.dbo.stores, CONNECTION=SQLSRV, KEYS=1, $

Relational Efficiencies Appendix FILENAME=SALES, SUFFIX=SQLMSS, $ SEGMENT=SALES, SEGTYPE=S0, $ FIELDNAME=STOR_ID, ALIAS=stor_id, USAGE=A4, ACTUAL=A4, $ FIELDNAME=ORD_NUM, ALIAS=ord_num, USAGE=A20, ACTUAL=A20, $ FIELDNAME=TITLE_ID, ALIAS=title_id, USAGE=A6, ACTUAL=A6, $ FIELDNAME=ORD_DATE, ALIAS=ord_date, USAGE=HYYMDs, ACTUAL=HYYMDs, $ FIELDNAME=QTY, ALIAS=qty, USAGE=I6, ACTUAL=I2, $ FIELDNAME=PAYTERMS, ALIAS=payterms, USAGE=A12, ACTUAL=A12, $ SEGNAME=SALES, TABLENAME=pubs.dbo.sales, CONNECTION=SQLSRV, KEYS=3, $