Thanks.
Here's an updated view definition with the additional guidance:
--If you create the following view, then the data provided by REORGCHK is available for SQL queries. This view returns the same Table Statistics as doing a REORGCHK.
DROP VIEW DXTDB.REORGCHK
;
CREATE VIEW DXTDB.REORGCHK AS (
SELECT CHAR(T. TABSCHEMA,12) AS TABSCHEMA
, CHAR(T.TABNAME,40) AS TABNAME
, T.CARD
, T.NPAGES
, T.FPAGES
, I****EAF
, CAST(T.CARD * (C.AVGCOLLEN + 10) AS BIGINT) AS TSIZE
, CASE WHEN T.CARD = 0 THEN NULL
ELSE CAST(100*T.OVERFLOW/T.CARD AS DEC(13,2)) END AS F1
, CASE WHEN BIGINT(T.FPAGES-1) * BIGINT(S.PAGESIZE-76) = 0 THEN NULL
ELSE CAST(100*BIGINT(T.CARD) * (C.AVGCOLLEN + 10) / (BIGINT(T.FPAGES-1) * BIGINT(S.PAGESIZE-76)) AS DEC(17,2)) END AS F2
, CASE WHEN T.FPAGES = 0 THEN NULL
ELSE CAST(100*T.NPAGES/T.FPAGES AS DEC(17,2)) END AS F3
, CASE WHEN T.CARD =0 THEN '-'
ELSE CASE WHEN CAST(100*T.OVERFLOW/T.CARD AS DEC(13,2)) >= 5 THEN '*' ELSE '-' END END
||
CASE WHEN BIGINT(T.FPAGES-1) * BIGINT(S.PAGESIZE-76) = 0 THEN '-'
ELSE CASE WHEN CAST(100*BIGINT(T.CARD) * (C.AVGCOLLEN + 10) / (BIGINT(T.FPAGES-1) * BIGINT(S.PAGESIZE-76)) AS DEC(17,2)) <= 70
THEN '*' ELSE '-' END END
||
CASE WHEN T.CARD =0 THEN '-'
ELSE CASE WHEN CAST(100*T.NPAGES/T.FPAGES AS DEC(17,2)) <= 80 THEN '*' ELSE '-' END END
AS REORG
FROM SYSCAT.TABLES T
, SYSCAT.TABLESPACES S
,( SELECT TABSCHEMA, TABNAME,
SUM(
CASE WHEN LOGGED = '' THEN AVGCOLLEN
WHEN LENGTH <= 1024 THEN 72
WHEN length <= 8192 THEN 96
WHEN length <= 65536 THEN 120
WHEN length <= 524000 THEN 144
WHEN length <= 4190000 THEN 168
WHEN length <= 134000000 THEN 200
WHEN length <= 536000000 THEN 224
WHEN length <= 1070000000 THEN 256
WHEN length <= 1470000000 THEN 280
WHEN length <= 2147483647 THEN 316
END
+ CASE WHEN LOGGED <> '' AND NULLS = 'Y' THEN 1 ELSE 0 END
) AS AVGCOLLEN
FROM SYSCAT.COLUMNS
GROUP BY TABSCHEMA, TABNAME
) AS C
,( SELECT TABSCHEMA, TABNAME, SUM(NLEAF) AS NLEAF, SUM(NLEVELS) AS NLEVELS
FROM SYSCAT.INDEXES
GROUP BY TABSCHEMA, TABNAME
) AS I
WHERE
T.TBSPACEID = S.TBSPACEID
AND T.TABSCHEMA = C.TABSCHEMA
AND T.TABNAME = C.TABNAME
AND T.TABSCHEMA = I.TABSCHEMA
AND T.TABNAME = I.TABNAME
AND T.TYPE IN ( 'T','S')
AND T.TABSCHEMA NOT IN ('SYSIBM','SYSCAT','SYSSTAT')
)
;
As a side note that this view doesn't produce the index info from a REORGCHK and it also assumes that one has run RUNSTATS and was going to issue a REORGCHK CURRENT STATISTICS ...
HTH,
Ruby