sql >> Databáze >  >> RDS >> Oracle

jak najít indexy v tabulce v oracle

Je velmi běžné, že chcete zjistit stav indexů a přiřazené sloupce pro tabulku Oracle
A také někdy chcete znát sloupce, které jsou přiřazeny k indexům.
V těchto případech by byly užitečné následující pohledy a najít indexy v tabulce v 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

Jak zkontrolovat index v tabulce v oracle

Můžeme použít níže uvedený dotaz na to, jak zkontrolovat sloupec indexu na tabulce v oracle a jak zkontrolovat index na tabulce v oracle. Zde je dotaz, jak najít indexy v tabulce v 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
/

jak zkontrolovat stav indexu v oracle

Normální index

SELECT owner, index_name, tablespace_name,status
FROM dba_indexes;

jak zkontrolovat nepoužitelné indexy v oracle

SELECT owner, index_name, tablespace_name,status
FROM dba_indexes
WHERE status = 'UNUSABLE';

Indexovat oddíly:

SELECT index_owner, index_name, partition_name, tablespace_name,status
FROM dba_ind_PARTITIONS;

Pokud chcete zjistit nepoužitelné oddíly ind, můžeme použít níže uvedený dotaz

SELECT index_owner, index_name, partition_name, tablespace_name,status
FROM dba_ind_PARTITIONS
WHERE status = 'UNUSABLE';

Indexovat dílčí oddíly:

SELECT index_owner, index_name, partition_name, subpartition_name, tablespace_name,status
FROM dba_ind_SUBPARTITIONS;

Pokud chcete zjistit nepoužitelné oddíly ind, můžeme použít níže uvedený dotaz

SELECT index_owner, index_name, partition_name, subpartition_name, tablespace_name,status
FROM dba_ind_SUBPARTITIONS
WHERE status = 'UNUSABLE';

Dotaz na kontrolu indexu spojeného s omezením

SELECT index_name, table_name, uniqueness
  FROM DBA_INDEXES WHERE table_name = '&1';

Seznam všech indexů ve schématu

SELECT index_name, table_name, uniqueness
  FROM DBA_INDEXES WHERE owner = '&1';

Dotaz k nalezení statistik indexu pro tabulku

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
/

Dotaz k nalezení definice sloupce indexu

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
/

S 12c zavedl Oracle koncept částečných indexů v dělené tabulce. Pohled *_INDEXES byl upraven tak, aby obsahoval sloupec INDEXING, který označuje, zda je index PLNÝ nebo ČÁSTEČNÝ.

Zkontrolujte stav indexování indexu.

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;

Související články
Virtuální index v Oracle:Co je virtuální index v Oracle? Použití, omezení, výhody a způsob použití ke kontrole plánu vysvětlení v databázi Oracle, skrytý parametr _USE_NOSEGMENT_INDEXES
Faktor clusteringu Oracle Index :Jak se vypočítává faktor clustering Oracle Index a jak to ovlivňuje plán vysvětlení
Oracle Partitioned Table :CO JE dělená tabulka Oracle?,Jak přesunout existující objekt do děleného objektu?,Rozdělování pro výkon – prořezávání oddílů
Oracle Partition Index :Vysvětlení indexu oddílů Oracle ,Co jsou globální nerozdělené indexy?, Co je místní předpona indexy, lokální index bez prefixů
Typy indexů v oracle :Tato stránka obsahuje informace o indexech oracle, různé typy indexů v oracle s příkladem, jak vytvořit/vypustit/změnit index v oracle

Doufám, že se vám tato kompilace dotazů souvisejících s indexem oracle líbí a pomůže vám při hledání odpovědí na různé dotazy, jako je jak najít index v tabulce, vypsat všechny indexy ve schématu, stav indexu v tabulce a mnoho dalších. Prosím, podělte se se mnou o to, co ještě mohu přidat do tohoto seznamu, abych tomuto příspěvku přidal další hodnotu. Prosím, poskytněte mi také zpětnou vazbu

Přečtěte si také
Jak vypsat seznam všech tabulek v Oracle:Seznam všech tabulek v Oracle můžeme získat dotazem all_tables nebo user_tables nebo dba_tables. můžeme vybrat sloupec a klauzuli where podle potřeby
Jak zkontrolovat velikost tabulky v Oracle :Zjistěte dotaz pro kontrolu velikosti tabulky v databázi Oracle, deset největších tabulek v konkrétním schématu nebo konkrétní tabulkový prostor v oracle
Jak spravovat indexy

Doporučené kurzy

Zde je pěkný kurz Udemy pro Oracle SQL
Oracle-Sql-Krok za krokem:Tento kurz pokrývá základní sql, spojení, vytváření tabulek a úpravu jejich struktury, vytváření zobrazení, sjednocení, sjednocení – vše a mnoho dalších věcí. . Skvělý kurz a kurz, který musíte mít pro začátečníky SQL
Úplný certifikační kurz Oracle SQL :Toto je dobrý kurz pro každého, kdo chce být Job připravený na vývojářské dovednosti SQL. Pěkně vysvětlený kurz
Oracle SQL Developer:Základy, tipy a triky :Vývojářský nástroj Oracle Sql používá mnoho vývojářů. Tento kurz nám poskytuje triky a lekce, jak jej efektivně používat a stát se produktivním vývojářem sql
Oracle SQL Performance Tuning Masterclass 2020 :Ladění výkonu je jednou z kritických a nejvyhledávanějších dovedností. Toto je dobrý kurz, jak se o tom dozvědět a začít s laděním výkonu SQL


  1. MySql získává záznamy nebo data denně, týdně, měsíčně a ročně

  2. Přístup odepřen pro uživatele 'root'@'localhost' (s použitím hesla:ANO) - Žádná oprávnění?

  3. Jak obnovit databázi SQL Server na Macu pomocí Azure Data Studio

  4. SQL Server 2017:Kopírování dat SQL Server z Linuxu do Windows pomocí SSIS