Index-Informationen anzeigen

Sie möchten sich Informationen zu Indizes und indizierte Spalten anzeigen lassen? Das folgende Skript gibt Ihnen alle Indizes samt der indizierten Spalten aus:

Oracle: Index und indizierte Spalten
SET PAGES 3000
SET LINES 120
SET TRIMSPOOL ON
SET TRIMOUT   ON
COL table_owner FORMAT a20
COL table_name  FORMAT a30
COL column_name FORMAT a30
COL column_name FORMAT a20
BREAK ON table_owner SKIP 1 ON table_name ON index_name SKIP 1
 
 
SELECT   table_owner
       , table_name
       , index_name
       , column_name
       , COLUMN_POSITION
FROM     dba_ind_columns 
WHERE    table_owner NOT LIKE '%SYS%' 
ORDER BY table_owner, table_name, column_position;

 

Möchten Sie auf Indizes des eigenen Schema-Owners reduzieren, so ersetzen Sie die View dba_ind_columns durch user_ind_column.

 

Tabellen mit mehr als 5 Indizes

Folgendes Skript zeigt Tabellen mit mehr als 5 Indizes. Eine Überindizierung kann zu Leistungseinbußen bei Insert-, Update- und Delete-Statements führen. Dies macht sich insbesondere bei Massenaktualisierungen bemerkbar.

Oracle: Anzahl an Indizes je Tabelle
SET PAGES 3000
SET LINES 120
SET TRIMSPOOL ON
SET TRIMOUT   ON
COL owner FORMAT a20
COL table_name  FORMAT a30
BREAK ON table_owner SKIP 1
 
 
SELECT    owner
        , table_name
        , count (*) ind_count
FROM      dba_indexes 
WHERE     owner LIKE '%SYS%'
GROUP BY  owner, table_name
HAVING    COUNT(*) > 5 
ORDER BY  COUNT(*) desc, OWNER, TABLE_NAME;

 

 

Tabellen ohne Index

Das folgende Skript gibt Tabellen aus, die keinen Index haben:

Oracle: Tabellen ohne Index
SELECT owner, table_name
FROM   dba_tables
WHERE  owner NOT LIKE '%SYS%'
MINUS
SELECT table_owner, table_name
FROM   dba_indexes;