Oracle
 sql >> Base de données >  >> RDS >> Oracle

comment trouver des index sur une table dans oracle

Il est très courant que vous souhaitiez rechercher l'état des index et les colonnes affectées pour une table oracle
Et vous souhaitez également parfois connaître les colonnes affectées aux index.
Les vues suivantes seraient utiles dans ces cas et pour trouver des index sur une table dans 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

Comment vérifier l'index sur la table dans Oracle

Nous pouvons utiliser la requête ci-dessous pour savoir comment vérifier la colonne d'index sur la table dans Oracle et comment vérifier l'index sur la table dans Oracle. Voici la requête sur la façon de trouver des index sur une table dans 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
/

comment vérifier l'état de l'index dans oracle

Indice normal

SELECT owner, index_name, tablespace_name,status
FROM dba_indexes;

comment vérifier les index inutilisables dans oracle

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

Partitions d'index :

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

Si vous souhaitez connaître les partitions ind inutilisables, nous pouvons utiliser la requête ci-dessous

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

Indexer les sous-partitions :

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

Si vous souhaitez connaître les sous-partitions ind inutilisables, nous pouvons utiliser la requête ci-dessous

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

Requête pour vérifier l'index associé à une contrainte

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

Répertorier tous les index d'un schéma

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

Requête pour trouver les statistiques d'index de la table

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
/

Requête pour trouver la définition de la colonne d'index

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
/

Avec 12c, Oracle a introduit le concept d'index partiels dans la table partitionnée. La vue *_INDEXES a été modifiée pour inclure une colonne INDEXING, qui indique si l'index est FULL ou PARTIAL.

Vérifiez l'état d'indexation de l'index.

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;

Articles connexes
L'index virtuel dans Oracle :qu'est-ce que l'index virtuel dans Oracle ? Utilisations, limites, avantages et comment vérifier le plan d'explication dans la base de données Oracle, paramètre caché _USE_NOSEGMENT_INDEXES
Facteur de clustering de l'index Oracle :comment le facteur de clustering de l'index Oracle est calculé et son impact sur le plan d'explication
Table partitionnée Oracle :QU'EST-CE QUE LA TABLE PARTITIONNÉE ORACLE ?,Comment déplacer l'objet existant vers un objet partitionné ?,Partitionnement pour la performance - Élagage de partition index, index local non préfixé
Types d'index dans oracle :cette page contient des informations sur les index oracle, différents types d'index dans oracle avec un exemple, comment créer/supprimer/modifier l'index dans oracle

J'espère que vous aimez cette compilation de requêtes liées à l'index Oracle et qu'elle vous aidera à trouver une réponse à diverses requêtes telles que la recherche d'un index sur une table, la liste de tous les index du schéma, l'état de l'index sur une table et bien d'autres. S'il vous plaît, partagez avec moi ce que je peux ajouter d'autre à cette liste pour ajouter plus de valeur à ce message. Merci de me faire part également de vos commentaires

Lire aussi
Comment répertorier toutes les tables dans Oracle :nous pouvons obtenir la liste de toutes les tables dans Oracle en interrogeant all_tables ou user_tables ou dba_tables. nous pouvons sélectionner la colonne et la clause where selon les besoins
Comment vérifier la taille de la table dans Oracle :découvrez la requête pour vérifier la taille de la table dans la base de données Oracle, les dix grandes tables dans un schéma particulier ou un espace de table particulier dans oracle
Comment gérer les index

Cours recommandés

Voici le joli cours Udemy pour Oracle SQL
Oracle-Sql-Step-by-step :Ce cours couvre les bases de SQL, les jointures, la création de tables et la modification de sa structure, la création de vues, l'union, l'union -all et bien d'autres choses . Un excellent cours et un cours indispensable pour les débutants SQL
Le cours complet de certification Oracle SQL  :c'est un bon cours pour tous ceux qui veulent être prêts à travailler pour les compétences de développeur SQL. Un cours bien expliqué
Oracle SQL Developer :Essentials, Tips and Tricks  :l'outil de développement Oracle SQL est utilisé par de nombreux développeurs. Ce cours nous donne des astuces et des leçons sur la façon de l'utiliser efficacement et de devenir un développeur sql productif
Oracle SQL Performance Tuning Masterclass 2020  :l'optimisation des performances est l'une des compétences essentielles et les plus recherchées. C'est un bon cours pour en savoir plus et commencer à ajuster les performances SQL