È molto comune che tu voglia trovare lo stato degli indici e le colonne assegnate per una tabella Oracle
E a volte vuoi anche conoscere le colonne assegnate agli indici.
In questi casi sarebbe utile seguire le viste e per trovare indici su una tabella in Oracle
dba_ind_columns : This is to used if login with user having DBA role all_ind_columns : This is to used if login with user having normal role user_ind_columns : This is to used if login with user having normal role
Come controllare l'indice sulla tabella in Oracle
Possiamo usare la query seguente su come controllare la colonna dell'indice sulla tabella in Oracle e come controllare l'indice sulla tabella in Oracle. Ecco la query su come trovare indici su una tabella in Oracle
set pagesize 50000 verify off echo off col table_name head 'Table Name' format a20 col index_name head 'Index Name' format a25 col column_name head 'Column Name' format a30 break on table_name on index_name select table_name, index_name, column_name from all_ind_columns where table_name like upper('&Table_Name') order by table_name, index_name, column_position /
come controllare lo stato dell'indice in Oracle
Indice normale
SELECT owner, index_name, tablespace_name,status FROM dba_indexes;
come controllare gli indici inutilizzabili in Oracle
SELECT owner, index_name, tablespace_name,status FROM dba_indexes WHERE status = 'UNUSABLE';
Partizioni dell'indice:
SELECT index_owner, index_name, partition_name, tablespace_name,status FROM dba_ind_PARTITIONS;
Se desideri conoscere le partizioni ind inutilizzabili, possiamo utilizzare la query di seguito
SELECT index_owner, index_name, partition_name, tablespace_name,status FROM dba_ind_PARTITIONS WHERE status = 'UNUSABLE';
Indicizzare le sottopartizioni:
SELECT index_owner, index_name, partition_name, subpartition_name, tablespace_name,status FROM dba_ind_SUBPARTITIONS;
Se desideri conoscere le sottopartizioni ind inutilizzabili, possiamo utilizzare la query di seguito
SELECT index_owner, index_name, partition_name, subpartition_name, tablespace_name,status FROM dba_ind_SUBPARTITIONS WHERE status = 'UNUSABLE';
Query per verificare l'indice associato a un vincolo
SELECT index_name, table_name, uniqueness FROM DBA_INDEXES WHERE table_name = '&1';
Elenca tutti gli indici in uno schema
SELECT index_name, table_name, uniqueness FROM DBA_INDEXES WHERE owner = '&1';
Interroga per trovare le statistiche dell'indice per la tabella
set linesize 200 set pages 250 set verify off col blevel format 99 col table_name format a22 heading 'TABLE NAME' col u format a1 heading 'U' col index_name format a25 heading 'INDEX NAME' col column_name format a23 heading 'COLUMN NAME' col column_position format 99 heading 'SEQ' col column_length format 9999 heading 'LEN' col leaf_blocks format 999990 heading 'LEAF|BLOCKS' col distinct_keys format 9999990 heading 'DISTINCT|KEYS' col avg_leaf_blocks_per_key format 999990 heading 'LEAF|BLKS|/KEY' col avg_data_blocks_per_key format 999990 heading 'DATA|BLKS|/KEY' rem break on table_name skip 1 on index_name on u rem select i.table_name,i.blevel, i.leaf_blocks, i.distinct_keys,i.avg_leaf_blocks_per_key, i.avg_data_blocks_per_key, decode( i.uniqueness, 'NONUNIQUE', null, 'UNIQUE', 'U', 'BITMAP', 'B', '?' ) u, i.index_name,i.last_analyzed, c.column_position, c.column_name, c.column_length from sys.dba_ind_columns c, sys.dba_indexes i where (i.table_owner,i.table_name) in ('&1','&2') and i.owner = c.index_owner and i.index_name = c.index_name order by i.table_owner, i.table_name, i.index_name, c.column_position /
Query per trovare la definizione della colonna dell'indice
ttitle 'Index Column Definitions' rem set linesize 100 set pages 250 set verify off col table_name format a22 heading 'TABLE NAME' col u format a1 heading 'U' col index_name format a20 heading 'INDEX NAME' col column_name format a25 heading 'COLUMN NAME' col column_position format 99 heading 'SEQ' col column_length format 999 heading 'LEN' rem break on table_name skip 1 on index_name on u rem select i.table_name, decode( i.uniqueness, 'NONUNIQUE', null, 'UNIQUE', 'U', 'BITMAP', 'B', '?' ) u, i.index_name, c.column_position, c.column_name, c.column_length from sys.dba_ind_columns c, sys.dba_indexes i where i.table_owner like upper('&owner') and i.table_name like upper('&table') and i.index_name like upper('&index') and c.column_name like upper('&column') and i.owner = c.index_owner and i.index_name = c.index_name order by i.table_owner, i.table_name, i.index_name, c.column_position /
Con 12c, Oracle ha introdotto il concetto di indici parziali nella tabella partizionata. La vista *_INDEXES è stata modificata per includere una colonna INDEXING, che indica se l'indice è COMPLETO o PARZIALE.
Controlla lo stato di indicizzazione dell'indice.
SELECT index_name, indexing FROM dba_indexes ORDER BY 1; INDEX_NAME INDEXING ------------------------- ------- EXP_INDEX_N1 PARTIAL This happened when we have indexing partial tag in the create index statement. CREATE INDEX EXP_INDEX_NI ON tab_name(col1) Local INDEXING PARTIAL;
Articoli correlati
Indice virtuale in Oracle:cos'è l'indice virtuale in Oracle? Usi, limitazioni, vantaggi e modalità di utilizzo per controllare il piano di spiegazione nel database Oracle, parametro nascosto _USE_NOSEGMENT_INDEXES
Fattore di clustering di Oracle Index:come viene calcolato il fattore di clustering di Oracle Index e come influisce sul piano di spiegazione
Tabella partizionata di Oracle :CHE COS'E' la tabella partizionata Oracle?,Come spostare l'oggetto esistente nell'oggetto partizionato?,Partizionamento per le prestazioni - Sfoltimento delle partizioni
Indice di partizione Oracle :Comprensione dell'indice di partizione Oracle ,Che cosa sono gli indici globali non partizionati?, Che cos'è il prefisso locale indici, indice locale senza prefisso
Tipi di indici in Oracle:questa pagina contiene informazioni sugli indici di Oracle, diversi tipi di indici in Oracle con esempio, come creare/eliminare/modificare l'indice in Oracle
Spero che questa raccolta di query relative all'indice di Oracle ti piaccia e ti aiuterà a trovare risposta a varie domande come come trovare l'indice su una tabella, elencare tutti gli indici nello schema, lo stato dell'indice su una tabella e molti altri. Per favore, condividi con me cos'altro posso aggiungere a questo elenco per aggiungere più valore a questo post. Per favore, forniscimi anche il feedback
Leggi anche
Come elencare tutte le tabelle in Oracle:possiamo ottenere l'elenco di tutte le tabelle in Oracle eseguendo query all_tables o user_tables o dba_tables. possiamo selezionare la colonna e la clausola where secondo la necessità
Come controllare la dimensione della tabella in Oracle:scopri la query per controllare la dimensione della tabella nel database Oracle, le prime dieci grandi tabelle in particolare schema o particolare tablespace in Oracle
Come gestire gli indici
Corsi consigliati
Ecco il bel corso Udemy per Oracle SQL
Oracle-Sql-Step-by-step:questo corso copre SQL di base, join, creazione di tabelle e modifica della sua struttura, creazione di viste, unione, unione, tutto e molto altro . Un ottimo corso e un corso indispensabile per principianti SQL
Il corso completo di certificazione Oracle SQL :Questo è un buon corso per chiunque voglia essere pronto per il lavoro per le competenze di sviluppatore SQL. Un bel corso spiegato
Oracle SQL Developer:Essentials, Tips and Tricks :lo strumento di sviluppo Oracle Sql è utilizzato da molti sviluppatori. Questo corso offre trucchi e lezioni su come utilizzarlo in modo efficace e diventare uno sviluppatore sql produttivo
Oracle SQL Performance Tuning Masterclass 2020 :l'ottimizzazione delle prestazioni è una delle abilità critiche e più ricercate. Questo è un buon corso per conoscerlo e iniziare a ottimizzare le prestazioni di sql