sql >> Database teknologi >  >> RDS >> Oracle

hvordan man finder indekser på en tabel i oracle

Det er meget almindeligt, at du vil finde indeksstatus og tildelte kolonner til en orakel-tabel
Og du engang vil vide, hvilke kolonner der er tildelt indekserne.
Følgende visninger ville være nyttige i disse tilfælde og for at finde indekser på en tabel 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

Sådan tjekker man indeks på tabellen i Oracle

Vi kan bruge nedenstående forespørgsel om, hvordan man kontrollerer indekskolonne på tabel i Oracle, og hvordan man kontrollerer indeks på tabel i Oracle. Her er forespørgslen om, hvordan man finder indekser på en tabel 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
/

hvordan man kontrollerer indeksstatus i Oracle

Normalt indeks

SELECT owner, index_name, tablespace_name,status
FROM dba_indexes;

hvordan du tjekker ubrugelige indekser i Oracle

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

Indekspartitioner:

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

Hvis du vil kende ubrugelige ind-partitioner, så kan vi bruge nedenstående forespørgsel

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

Indeks underpartitioner:

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

Hvis du vil kende ubrugelige ind-underpartitioner, så kan vi bruge nedenstående forespørgsel

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

Forespørgsel for at kontrollere Index Associated with a Constraint

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

Liste alle indekser i et skema

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

Forespørgsel for at finde indeksstatistikken for 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
/

Forespørgsel for at finde indekskolonnedefinition

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 introduceret konceptet med partielle indekser i partitioneret tabel. *_INDEXES-visningen er blevet ændret til at inkludere en INDEKSERENDE kolonne, som angiver, om indekset er FULD eller DELVIS.

Kontroller indekseringsstatussen for indekset.

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;

Relaterede artikler
Virtuelt indeks i Oracle:Hvad er virtuelt indeks i Oracle? Bruger, begrænsninger, fordele og hvordan man bruger det til at kontrollere forklaringsplanen i Oracle-databasen, skjult parameter _USE_NOSEGMENT_INDEXES
Oracle Index-klyngefaktor:Hvordan Oracle Index-klyngefaktor beregnes og hvordan det påvirker forklaringsplanen
Oracle Partitioned Table :HVAD ER Oracle-partitioneret tabel?,Hvordan flyttes det eksisterende objekt til Partitioneret objekt?,Partitionering for ydeevne – Partitionsbeskæring
Oracle Partition Index :Forstå Oracle-partitionsindekset ,Hvad er Global Non-partitioned Indexes?, Hvad er lokalt præfiks indekser, lokalt indeks uden præfiks
Typer af indekser i Oracle :Denne side består af Oracle-indeksoplysninger, forskellige typer indekser i Oracle med eksempel, hvordan man opretter/slipper/ændrer indekset i Oracle

Jeg håber, du kan lide denne samling af oracle-indeksrelaterede forespørgsler, og det vil hjælpe med at finde svar på forskellige forespørgsler, såsom hvordan man finder indeks på en tabel, liste alle indekser i skemaet, indeksstatus på en tabel og mange flere. Del venligst med mig, hvad jeg ellers kan tilføje til denne liste for at tilføje mere værdi til dette indlæg. Giv mig også feedback

Læs også
Sådan viser du alle tabeller i Oracle:Vi kan få listen over alle tabeller i Oracle ved enten at forespørge alle_tabeller eller brugertabeller eller dba_tabeller. vi kan vælge kolonne og hvor-klausul efter behov
Sådan kontrollerer man tabelstørrelse i Oracle:Find ud af forespørgslen for at kontrollere tabelstørrelse i Oracle-database, top ti store tabeller i et bestemt skema eller bestemt tablespace i Oracle
Sådan administreres indekser

Anbefalede kurser

Her er det fine Udemy-kursus til Oracle SQL
Oracle-Sql-trin-for-trin :Dette kursus dækker grundlæggende sql, joins, oprettelse af tabeller og ændring af strukturen, Create View, Union, Union -alle og meget andet. . Et godt kursus og must-have kursus for SQL starter
The Complete Oracle SQL Certification Course :Dette er et godt kursus for enhver, der ønsker at være jobklar til SQL-udviklerfærdigheder. Et godt forklaret kursus
Oracle SQL Developer:Essentials, Tips and Tricks :Oracle Sql-udviklerværktøj bliver brugt af mange udviklere. Dette kursus giver os tricks og lektioner til, hvordan man effektivt bruger det og bliver en produktiv sql-udvikler
Oracle SQL Performance Tuning Masterclass 2020 :Indstilling af ydeevne er en af ​​de kritiske og mest søgte færdigheder. Dette er et godt kursus for at lære om det og begynde at lave sql-ydelsesjustering


  1. Sådan bruger du analytiske funktioner i Oracle (Overpartition efter søgeord)

  2. Aktiver ekstern MySQL-forbindelse:FEJL 1045 (28000):Adgang nægtet for bruger

  3. Sådan sammenkædes strenge i SQL Server med CONCAT()

  4. SQL-forespørgsel:Slet alle poster fra tabellen undtagen seneste N?