Oracle
 sql >> Baza danych >  >> RDS >> Oracle

jak znaleźć indeksy na stole w oracle

Bardzo często zdarza się, że chcesz znaleźć status indeksów i przypisane kolumny dla tabeli oracle
A także czasami chcesz poznać kolumny, które są przypisane do indeksów.
Poniższe widoki byłyby pomocne w takich przypadkach i znaleźć indeksy na tabeli w 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 sprawdzić indeks w tabeli w Oracle

Możemy użyć poniższego zapytania jak sprawdzić kolumnę indeksu na tabeli w Oracle i jak sprawdzić indeks na tabeli w Oracle. Oto zapytanie, jak znaleźć indeksy w tabeli w 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 sprawdzić stan indeksu w Oracle

Normalny indeks

SELECT owner, index_name, tablespace_name,status
FROM dba_indexes;

jak sprawdzić nieużyteczne indeksy w Oracle

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

Partycje indeksu:

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

Jeśli chcesz poznać nieużyteczne partycje ind, możemy użyć poniższego zapytania

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

Indeks podpartycji:

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

Jeśli chcesz poznać nieużyteczne partycje ind, możemy użyć poniższego zapytania

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

Zapytanie o sprawdzenie indeksu powiązanego z ograniczeniem

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

Wymień wszystkie indeksy w schemacie

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

Zapytanie, aby znaleźć statystyki indeksu dla tabeli

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
/

Zapytanie, aby znaleźć definicję kolumny indeksu

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
/

W 12c firma Oracle wprowadziła koncepcję indeksów częściowych w tabeli partycjonowanej. Widok *_INDEXES został zmodyfikowany tak, aby zawierał kolumnę INDEXING, która wskazuje, czy indeks jest PEŁNY, czy CZĘŚCIOWY.

Sprawdź stan indeksowania indeksu.

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;

Powiązane artykuły
Wirtualny indeks w Oracle:Co to jest wirtualny indeks w Oracle? Zastosowania, ograniczenia, zalety i sposoby sprawdzania planu wyjaśniania w bazie danych Oracle, Ukryty parametr _USE_NOSEGMENT_INDEXES
Współczynnik klastrowania Oracle Index:Jak obliczany jest współczynnik klastrowania Oracle Index i jaki ma on wpływ na plan wyjaśniania
Tabela partycjonowana Oracle :CO TO JEST tabela partycjonowana Oracle?,Jak przenieść istniejący obiekt do obiektu partycjonowanego?,Partycjonowanie w celu zapewnienia wydajności — czyszczenie partycji
Indeks partycji Oracle :Zrozumienie indeksu partycji Oracle, Co to są globalne indeksy niepartycjonowane?, Co to jest lokalny prefiks indeksy, lokalny indeks bez prefiksu
Typy indeksów w Oracle :Ta strona zawiera informacje o indeksach Oracle, różne typy indeksów w Oracle z przykładem, jak utworzyć/upuścić/zmienić indeks w Oracle

Mam nadzieję, że spodobała Ci się ta kompilacja zapytań związanych z indeksami oracle i pomoże w znalezieniu odpowiedzi na różne zapytania, takie jak znalezienie indeksu w tabeli, wylistowanie wszystkich indeksów w schemacie, status indeksu w tabeli i wiele innych. Podziel się ze mną, co jeszcze mogę dodać do tej listy, aby dodać więcej wartości do tego postu. Proszę również o przesłanie opinii

Czytaj także
Jak wyświetlić listę wszystkich tabel w Oracle:możemy uzyskać listę wszystkich tabel w Oracle, wykonując zapytania all_tables lub user_tables lub dba_tables. możemy wybrać kolumnę i klauzulę where zgodnie z potrzebami
Jak sprawdzić rozmiar tabeli w Oracle :Dowiedz się, jak sprawdzić rozmiar tabeli w bazie danych Oracle, dziesięć największych dużych tabel w określonym schemacie lub w określonej przestrzeni tabel w Oracle
Jak zarządzać indeksami

Polecane kursy

Oto fajny kurs Udemy dotyczący Oracle SQL
Oracle-Sql-Step-by-step :Ten kurs obejmuje podstawowe informacje o SQL, złączenia, tworzenie tabel i modyfikowanie ich struktury, tworzenie widoku, łączenie, łączenie i wiele innych rzeczy . Świetny kurs i obowiązkowy kurs dla początkujących SQL
Pełny kurs certyfikacji Oracle SQL :To dobry kurs dla każdego, kto chce być gotowy do pracy w zakresie umiejętności programistycznych SQL. Fajnie objaśniony kurs
Oracle SQL Developer:Essentials, Tips and Tricks :Narzędzie programistyczne Oracle SQL jest używane przez wielu programistów. Ten kurs zawiera sztuczki i lekcje, jak skutecznie z niego korzystać i zostać produktywnym programistą sql
Oracle SQL Performance Tuning Masterclass 2020 :Dostrajanie wydajności jest jedną z najważniejszych i najbardziej poszukiwanych umiejętności. To dobry kurs, aby się o tym dowiedzieć i zacząć dostrajać wydajność sql


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Oracle SQL :znaczniki czasu w klauzuli gdzie

  2. Jak działa podzapytanie w instrukcji select w oracle?

  3. Jak upuścić stół w wyroczni?

  4. Łączenie Oracle z Amazon Aurora

  5. Tworzenie wyzwalacza sekwencji Oracle