Benutzer-Werkzeuge

Webseiten-Werkzeuge


dba:index_column_usage

Unterschiede

Hier werden die Unterschiede zwischen zwei Versionen angezeigt.

Link zu dieser Vergleichsansicht

Beide Seiten der vorigen RevisionVorhergehende Überarbeitung
Nächste Überarbeitung
Vorhergehende Überarbeitung
dba:index_column_usage [2013/08/05 17:03] – [Spalten finden, die mehr als einmal in einem Index verwendet werden] gpipperrdba:index_column_usage [2013/08/05 17:18] (aktuell) – [Skript für die Analyse] gpipperr
Zeile 1: Zeile 1:
-===== Oracle Tabellen Spalten auf Indizierung prüfen  ===== +===== Spalten in Oracle Tabellen auf Indizierung prüfen  =====
 ==== Spalten finden die öfters in SQL Statements verwendet werden ==== ==== Spalten finden die öfters in SQL Statements verwendet werden ====
 Mit Hilfe der Tabelle **sys.col_usage$** kann überprüft werden, ob und wie oft auf Spalten einer Tabelle in SQL Statements zugegriffen wird. Mit Hilfe der Tabelle **sys.col_usage$** kann überprüft werden, ob und wie oft auf Spalten einer Tabelle in SQL Statements zugegriffen wird.
Zeile 7: Zeile 6:
 ==== Spalten finden, die mehr als einmal in einem Index verwendet werden ==== ==== Spalten finden, die mehr als einmal in einem Index verwendet werden ====
  
-Die Einfüge Performance kann erheblich unter der Mehrfach Indizierung von zusammengesetzten Indexes leiden.+Die Einfüge Performance kann erheblich unter der Mehrfach Indizierung von zusammengesetztem Indexen leiden.
 Mit dem Analyse Script werden all Indexes aufgelistet, die mehr als eine Spalte verwenden. Mit dem Analyse Script werden all Indexes aufgelistet, die mehr als eine Spalte verwenden.
  
 ==== Skript für die Analyse ==== ==== Skript für die Analyse ====
  
-Mit folgenden Script kann überprüft werden, ob Spalten, die in SQL Verwendung finden, nicht indiziert oder mehrfach in indiziert sind.+Mit folgenden Script kann überprüft werden, ob Spalten, die in SQL Verwendung finden, nicht indiziert oder aber mehrfach indiziert sind. 
 + 
 +Das Script erzeugt einen HTML Bericht um eine bessere Lesbarkeit der Ausgabe zu erlauben. 
 + 
 +In einer MS Windows Umgebung wird der Bericht direkt nach dem Anlegen im Browser anzeigt, in Linux Umgebungen Host Kommando aus kommentieren. 
 + 
  
 <code sql check_col_usage.sql> <code sql check_col_usage.sql>
Zeile 19: Zeile 24:
    
 SELECT replace(ora_database_name||'_'||SYS_CONTEXT('USERENV','HOST')||'_'||to_char(sysdate,'dd_mm_yyyy_hh24_mi')||'.html','\','_' SELECT replace(ora_database_name||'_'||SYS_CONTEXT('USERENV','HOST')||'_'||to_char(sysdate,'dd_mm_yyyy_hh24_mi')||'.html','\','_'
---'+--' resolve syntax highlight bug FROM my editer .-(
   AS SPOOL_NAME_COL   AS SPOOL_NAME_COL
 FROM dual FROM dual
Zeile 45: Zeile 50:
  
 select  select 
-    o.owner +      o.owner 
-  , o.object_name +    , o.object_name 
-  , c.name  as column_name +    , c.name  as column_name 
-  , u.equality_preds +    , u.equality_preds 
-  , u.range_preds +    , u.range_preds 
-  , u.like_preds +    , u.like_preds 
-  , u.null_preds +    , u.null_preds 
-  , u.equijoin_preds +    , u.equijoin_preds 
-  , u.nonequijoin_preds+    , u.nonequijoin_preds
 from  from 
-   sys.col_usage$ u +      sys.col_usage$ u 
- , dba_objects    o       +    , dba_objects    o       
-    , sys.col$         +    , sys.col$            
 where u.obj#    = o.OBJECT_ID where u.obj#    = o.OBJECT_ID
   and u.obj#    = c.obj#    and u.obj#    = c.obj# 
Zeile 65: Zeile 70:
                     from dba_ind_columns i                      from dba_ind_columns i 
                    where i.table_owner = o.owner                     where i.table_owner = o.owner 
-      and i.table_name  = o.object_name  +                     and i.table_name  = o.object_name  
-  and i.column_name = c.name )+                     and i.column_name = c.name )
  order by  o.owner, o.object_name,c.name  order by  o.owner, o.object_name,c.name
 /   /  
 +
  
 ttitle center "Index with more then one Columns" SKIP 2 ttitle center "Index with more then one Columns" SKIP 2
Zeile 74: Zeile 80:
 SET linesize 130 pagesize 2000 recsep OFF SET linesize 130 pagesize 2000 recsep OFF
  
-column index_owner format a25 +column   index_owner format a25 
-column index_name  format a25 +column   index_name  format a25 
-column table_name  format a25 +column   table_name  format a25 
-column column_name format a25 +column   column_name format a25 
-column  pos1 format a25+column  pos1      format a25
 column  pos2        format a25  column  pos2        format a25 
 column  pos3        format a25 column  pos3        format a25
Zeile 87: Zeile 93:
 column  pos8        format a25 column  pos8        format a25
 column  pos9        format a25 column  pos9        format a25
- +      
 select * from ( select * from (
- select * from ( +   select * from ( 
-   select   +        select   
-       index_owner +               index_owner 
-     , table_name +             , table_name 
-     , index_name +             , index_name 
-     , column_name +             , column_name 
-     , column_position +             , column_position 
-    from dba_ind_columns +         from dba_ind_columns 
-   where index_owner like '&&USERNAME.%'   +        where index_owner like '&&USERNAME.%'   
-   order by index_owner,table_name +        order by index_owner,table_name 
- )   +   )   
- pivot (  +   pivot (  
-  min (column_name) +       min (column_name) 
- for column_position +         for column_position 
- in  ('1' as pos1 +         in  ('1' as pos1 
- ,'2' as pos2 +             ,'2' as pos2 
- ,'3' as pos3 +             ,'3' as pos3 
- ,'4' as pos4 +             ,'4' as pos4 
- ,'5' as pos5 +             ,'5' as pos5 
- ,'6' as pos6 +             ,'6' as pos6 
- ,'7' as pos7 +             ,'7' as pos7 
- ,'8' as pos8 +             ,'8' as pos8 
- ,'9' as pos9 +             ,'9' as pos9 
- +            
- )+   )
  
 where pos2 is not null where pos2 is not null
Zeile 122: Zeile 128:
 ttitle off ttitle off
  
 +-- works only in a ms windows enviroment
 +-- autostart of the result in a browser window
 +host &&SPOOL_NAME
  
-</code> 
  
 +</code>
 ==== Quellen ==== ==== Quellen ====
  
   * http://www.adp-gmbh.ch/ora/misc/sys_tables.html   * http://www.adp-gmbh.ch/ora/misc/sys_tables.html
dba/index_column_usage.txt · Zuletzt geändert: 2013/08/05 17:18 von gpipperr