Oracle
 sql >> Base de Dados >  >> RDS >> Oracle

como encontrar índices em uma tabela no oracle


É muito comum que você queira encontrar o status dos índices e as colunas atribuídas para uma tabela oracle
E também, às vezes, você deseja saber as colunas atribuídas aos índices.
Seguir as visualizações seria útil nesses casos e encontrar índices em uma tabela no 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

Como verificar o índice na tabela no oracle


Podemos usar a consulta abaixo sobre como verificar a coluna de índice na tabela no oracle e como verificar o índice na tabela no oracle. Aqui está a consulta sobre como encontrar índices em uma tabela no 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
/

como verificar o status do índice no oracle


Índice normal
SELECT owner, index_name, tablespace_name,status
FROM dba_indexes;

como verificar índices inutilizáveis ​​no oracle
SELECT owner, index_name, tablespace_name,status
FROM dba_indexes
WHERE status = 'UNUSABLE';

Partições de índice:
SELECT index_owner, index_name, partition_name, tablespace_name,status
FROM dba_ind_PARTITIONS;

Se você quiser saber as partições de pesquisa inutilizáveis, podemos usar a consulta abaixo
SELECT index_owner, index_name, partition_name, tablespace_name,status
FROM dba_ind_PARTITIONS
WHERE status = 'UNUSABLE';

Indexar subpartições:
SELECT index_owner, index_name, partition_name, subpartition_name, tablespace_name,status
FROM dba_ind_SUBPARTITIONS;

Se você quiser saber sobre partições ind inutilizáveis, podemos usar a consulta abaixo
SELECT index_owner, index_name, partition_name, subpartition_name, tablespace_name,status
FROM dba_ind_SUBPARTITIONS
WHERE status = 'UNUSABLE';

Consulta para verificar o índice associado a uma restrição

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

Listar todos os índices em um esquema

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

Consulta para encontrar as estatísticas de índice da tabela

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
/

Consulta para encontrar a definição da coluna do índice

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
/

Com o 12c, a Oracle introduziu o conceito de índices parciais na tabela particionada. A visualização *_INDEXES foi modificada para incluir uma coluna INDEXING, que indica se o índice é FULL ou PARTIAL.

Verifique o status de indexação do índice.
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;

Artigos relacionados
Índice Virtual no Oracle:O que é Índice Virtual no Oracle? Usos, limitação, vantagem e como usar para verificar o plano de explicação no banco de dados Oracle, parâmetro oculto _USE_NOSEGMENT_INDEXES
Fator de clustering do Oracle Index:como o fator de clustering do Oracle Index é calculado e como isso afeta o plano de explicação
Tabela Particionada do Oracle :O QUE É Oracle Partition Table?, Como mover o objeto existente para o objeto Partitioned?, Partitioning for Performance – Partition Pruning
Oracle Partition Index :Entendendo o índice de partição Oracle ,O que são índices globais não particionados?, O que é prefixado local índices, índice local não prefixado
Tipos de índices no oracle :Esta página consiste em informações de índices do oracle,diferentes tipos de índices no oracle com exemplo,como criar/descartar/alterar o índice no oracle

Espero que você goste desta compilação de consultas relacionadas ao índice oracle e ajude a encontrar respostas para várias consultas, como encontrar o índice em uma tabela, listar todos os índices no esquema, status do índice em uma tabela e muito mais. Por favor, compartilhe comigo o que mais eu posso adicionar a esta lista para agregar mais valor a este post. Por favor, forneça-me o feedback também

Leia também
Como listar todas as tabelas no Oracle:podemos obter o List All Tables no Oracle consultando all_tables ou user_tables ou dba_tables. podemos selecionar a coluna e a cláusula where conforme a necessidade
Como verificar o tamanho da tabela no Oracle:Descubra a consulta para verificar o tamanho da tabela no banco de dados Oracle, as dez principais tabelas grandes em determinado esquema ou espaço de tabela específico no oracle
Como gerenciar índices

Cursos recomendados


Aqui está o bom curso da Udemy para Oracle SQL
Oracle-Sql-Step-by-step:Este curso abrange sql básico, junções, criação de tabelas e modificação de sua estrutura, criação de exibição, união, união -tudo e muitas outras coisas . Um ótimo curso e curso obrigatório para iniciantes em SQL
O Curso Completo de Certificação Oracle SQL :Este é um bom curso para quem quer estar pronto para trabalhar com habilidades de desenvolvedor SQL. Um bom curso explicado
Oracle SQL Developer:Essentials, Tips and Tricks :A ferramenta de desenvolvedor Oracle Sql está sendo usada por muitos desenvolvedores. Este curso nos dá truques e lições sobre como usá-lo efetivamente e se tornar um desenvolvedor sql produtivo
Oracle SQL Performance Tuning Masterclass 2020 :O ajuste de desempenho é uma das habilidades críticas e mais procuradas. Este é um bom curso para aprender sobre isso e começar a fazer o ajuste de desempenho do sql