IBM DB2 Query Toolbox - List unique keys and indexes in DB2 database



Desenvolvido por DORNELLES Carlos Alberto - Analista de Sistemas - Brasília DF. - cad_cobol@hotmail.com

IBM Db2 Query Toolbox - List unique keys and indexes in DB2 database

A consulta abaixo retorna todas as chaves primárias e restrições exclusivas em tabelas no banco de dados IBM DB2.
Query below returns all primary keys and unique constraints on tables in IBM DB2 database.

Consulta - Query

SELECT TAB.TABSCHEMA || '.' || TAB.TABNAME AS TABLE_NAME
,      TAB.CONSTNAME AS CONSTRAINT_NAME
,      CASE WHEN TAB.TYPE = 'P' THEN 'PRIMARY KEY'
            ELSE 'UNIQUE'
       END AS CONSTRAINT_TYPE
,      LISTAGG(KEY.COLNAME, ', ')
              WITHIN GROUP(ORDER BY KEY.COLSEQ) AS COLUMNS
,            IND.INDNAME AS INDEX_NAME,
       CASE IND.INDEXTYPE
            WHEN 'BLOK' THEN 'BLOCK INDEX'
            WHEN 'REG' THEN 'REGULAR INDEX'
            WHEN 'CPMA' THEN 'PAGE MAP INDEX FOR A COLUMN-ORGANIZED TABLE'
            WHEN 'RCT ' THEN 'KEY SEQUENCE INDEX FOR A RANGE-CLUSTERED TABLE'
            WHEN 'CLUS' THEN 'CLUSTERING INDEX'
            WHEN 'TEXT' THEN 'TEXT INDEX'
            WHEN 'DIM' THEN 'DIMENSION BLOCK INDEX'
            WHEN 'XPTH' THEN 'XML PATH INDEX'
            WHEN 'XRGN' THEN 'XML REGION INDEX'
            WHEN 'XVIL' THEN 'INDEX OVER XML COLUMN (LOGICAL)'
            WHEN 'XVIP' THEN 'INDEX OVER XML COLUMN (PHYSICAL)'
        END AS INDEX_TYPE
  FROM SYSCAT.TABCONST TAB
       JOIN SYSCAT.KEYCOLUSE KEY
         ON TAB.TABSCHEMA = KEY.TABSCHEMA
        AND TAB.TABNAME = KEY.TABNAME
        AND TAB.CONSTNAME = KEY.CONSTNAME
       JOIN SYSCAT.CONSTDEP DEP 
         ON TAB.CONSTNAME = DEP.CONSTNAME
        AND TAB.TABSCHEMA = DEP.TABSCHEMA
        AND TAB.TABNAME = DEP.TABNAME
       JOIN SYSCAT.INDEXES IND
         ON DEP.BSCHEMA = IND.INDSCHEMA
        AND DEP.BNAME = IND.INDNAME 
 WHERE TAB.TABSCHEMA NOT LIKE ('SYS%')
   AND TAB.TYPE IN ('P','U')
 GROUP BY TAB.TABSCHEMA
 ,        TAB.CONSTNAME
 ,        TAB.TABNAME
 ,        TAB.TYPE
 ,        IND.INDNAME
 ,        IND.INDEXTYPE
 ORDER BY TABLE_NAME;

Colunas

  • table_name - nome da tabela com o nome do esquema
  • constraint_name - nome de restrição da chave primária ou restrição única
  • constraint_type - tipo de restrição
    • CHAVE PRIMÁRIA
    • EXCLUSIVO
  • colunas - colunas separadas por ","
  • index_name - nome do índice usado pela restrição
  • index_type - tipo de índice:
    • Índice de bloco
    • Índice regular
    • Índice do mapa de página para uma tabela organizada por colunas
    • ndice de sequência de chaves para uma tabela agrupada por intervalo
    • Índice de agrupamento
    • Índice de texto
    • Índice de bloco de dimensão
    • Índice de caminho XML
    • Índice de região XMLv
    • Índice sobre coluna XML (lógico)
    • Índice sobre coluna XML (físico)

Linhas

  • Uma linha representa uma restrição no banco de dados.
  • Escopo das linhas: todos os PKs e restrições exclusivas
  • Ordenado por esquema e nome de tabela

Columns

  • table_name - name of the table with schema name
  • constraint_name - constraint name of primary key or unique constraint
  • constraint_type - type of the constraint
    • PRIMARY KEY
    • UNIQUE
  • columns - columns separated with ","
  • index_name - name of index used by constraint
  • index_type - type of index:
    • Block index
    • Regular index
    • Page map index for a column-organized table
    • Key sequence index for a range-clustered table
    • Clustering index
    • Text index
    • Dimension block index
    • XML path index
    • XML region index
    • Index over XML column (logical)
    • Index over XML column (physical)

Rows

  • One row represents one constraint in the database.
  • Scope of rows: all PKs, and unique constraints
  • Ordered by schema and table name

Resultado - Sample results


Copyright © Dataedo.