sql >> Databasteknik >  >> RDS >> Oracle

hur man hittar index på en tabell i oracle

Det är mycket vanligt att du vill hitta indexstatus och tilldelade kolumner för en orakeltabell
Och ibland vill du veta vilka kolumner som är tilldelade indexen.
Följande vyer skulle vara till hjälp i dessa fall och för att hitta index på en tabell i 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

Hur man kontrollerar index på tabellen i Oracle

Vi kan använda nedanstående fråga om hur man kontrollerar indexkolumn på tabell i Oracle och hur man kontrollerar index på tabell i Oracle. Här är frågan om hur man hittar index på en tabell i 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
/

hur man kontrollerar indexstatus i Oracle

Normalt index

SELECT owner, index_name, tablespace_name,status
FROM dba_indexes;

hur man kontrollerar oanvändbara index i Oracle

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

Indexpartitioner:

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

Om du vill veta oanvändbara ind-partitioner kan vi använda frågan nedan

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

Index underpartitioner:

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

Om du vill veta oanvändbara ind-underpartitioner kan vi använda nedanstående fråga

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

Fråga för att kontrollera Index associerat med en begränsning

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

Lista alla index i ett schema

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

Fråga för att hitta indexstatistiken för tabellen

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
/

Fråga för att hitta definition av indexkolumn

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
/

Med 12c har Oracle introducerat konceptet med partiella index i partitionerad tabell. *_INDEXES-vyn har modifierats för att inkludera en INDEXERINGskolumn, som indikerar om indexet är HELT eller DELVIS.

Kontrollera indexets indexeringsstatus.

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;

Relaterade artiklar
Virtuellt index i Oracle :Vad är virtuellt index i Oracle? Användning, begränsning, fördel och hur man använder för att kontrollera förklara planen i Oracle-databasen, Hidden parameter _USE_NOSEGMENT_INDEXES
Oracle Index klustringsfaktor :Hur Oracle Index klustringsfaktor beräknas och hur det påverkar förklara planen
Oracle Partitioned Table :VAD ÄR en oracle-partitionerad tabell?,Hur flyttar man det befintliga objektet till ett partitionerat objekt?,Partitionering för prestanda – Partitionsbeskärning
Oracle-partitionsindex :Förstå Oracle-partitionsindex ,Vad är Global Non-partitioned Indexes?, Vad är lokalt prefix index, lokalt index utan prefix
Typer av index i oracle :Denna sida består av oracle-indexinformation, olika typer av index i oracle med exempel, hur man skapar/släpper/ändrar index i oracle

Jag hoppas att du gillar den här sammanställningen av oracle-indexrelaterade frågor och det kommer att hjälpa dig att hitta svar på olika frågor som hur man hittar index på en tabell, lista alla index i schemat, indexstatus på en tabell och många fler. Vänligen dela med mig vad jag kan lägga till i den här listan för att lägga till mer värde till detta inlägg. Ge mig feedback också

Läs även
Hur man listar alla tabeller i Oracle:vi kan få Lista alla tabeller i Oracle genom att antingen fråga alla_tabeller eller användartabeller eller dba_tabeller. vi kan välja kolumn och var-klausul efter behov
Hur man kontrollerar tabellstorleken i Oracle:Ta reda på frågan för att kontrollera tabellstorleken i Oracle-databasen, topp tio stora tabeller i särskilt schema eller viss tabellyta i Oracle
Hur man hanterar index

Rekommenderade kurser

Här är den trevliga Udemy-kursen för Oracle SQL
Oracle-Sql-Steg-för-steg :Den här kursen täcker grundläggande sql, går med, skapar tabeller och ändrar dess struktur, Skapa vy, Union, Union -allt och mycket annat . En bra kurs och måste-kurs för SQL-startare
The Complete Oracle SQL Certification Course :Det här är en bra kurs för alla som vill vara redo för SQL-utvecklare. En trevlig förklarad kurs
Oracle SQL Developer:Essentials, Tips and Tricks :Oracle Sql-utvecklarverktyget används av många utvecklare. Den här kursen ger oss tricks och lektioner om hur man effektivt använder den och blir en produktiv SQL-utvecklare
Oracle SQL Performance Tuning Masterclass 2020 :Prestandajustering är en av de kritiska och mest eftertraktade färdigheterna. Det här är en bra kurs för att lära dig om det och börja göra sql-prestandajustering


  1. SQL Server Error 206:Operand typ clash

  2. Hur man ansluter MySQL-databas med PHP-webbplats

  3. Exportera Postgresql-tabelldata med pgAdmin

  4. STRING_SPLIT() i SQL Server 2016:Uppföljning #2