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

Index Oracle et types d'index dans Oracle avec exemple

Nous discuterons des index/types d'index Oracle dans Oracle avec un exemple dans cet article. Je passerai en revue toutes les options permettant de créer un index dans Oracle. Je discuterais également de la manière de vérifier la taille de l'index dans Oracle. J'espère que vous aimerez ce post. J'attends avec impatience vos commentaires sur ce message

Que sont les index Oracle ?

  • Tout comme nous avons un index présent dans les manuels pour nous aider à trouver le sujet particulier dans le livre, l'index Oracle se comporte de la même manière. Nous avons différents types d'index dans Oracle.
  • Les index sont utilisés pour rechercher rapidement les lignes de la table oracle. Si l'index n'est pas présent, la requête de sélection doit lire toute la table et renvoie les lignes. Avec Index, les lignes peuvent être récupérées rapidement
  • Nous devons créer des index lors de la récupération d'un petit nombre de lignes d'une table. ou pour récupérer le premier ensemble de lignes aussi rapidement que possible à partir d'une requête qui renverra finalement un grand nombre de lignes. Cela dépend également de la distribution des données, c'est-à-dire du facteur de regroupement
  • Les index sont logiquement et physiquement indépendants des données de la table associée.
  • Les index sont des structures facultatives associées aux tables et aux clusters. Vous pouvez créer des index sur une ou plusieurs colonnes d'une table pour accélérer l'exécution des instructions SQL sur cette table.
  • Les index sont le principal moyen de réduire les E/S de disque lorsqu'ils sont correctement utilisés.
  • La requête décide au début d'utiliser index ou non
  • La meilleure chose avec les index est que les performances de récupération des données indexées restent presque constantes, même lorsque de nouvelles lignes sont insérées. Cependant, la présence de nombreux index sur une table diminue les performances des mises à jour, des suppressions et des insertions car Oracle doit également mettre à jour les index associés à la table.
  • Si vous êtes propriétaire de la table, vous pouvez créer un index ou, si vous souhaitez créer un index pour une table dans un autre schéma, vous devez disposer du privilège système CREATE ANY INDEX ou du privilège d'indexation sur cette table

Type logique des index

Il définit les caractéristiques d'application de l'Index

Unique ou non unique Un index peut être unique ou non unique. Oracle crée un index unique pour la clé primaire et les contraintes de clé unique
Si des index non uniques sont déjà présents sur cette colonne, il ne créera pas de nouvel index unique pour la clé primaire dans Oracle
Composite L'index peut être composé d'une ou de plusieurs colonnes. Les index composites peuvent accélérer la récupération des données pour les instructions SELECT dans lesquelles la clause WHERE fait référence à toutes ou à la partie principale des colonnes de l'index composite.
Index basés sur les fonctions Les données de la colonne indexée sont basées sur un calcul
Index de domaine d'application Cet index est utilisé dans des applications spéciales (Spatial, Text).

Qu'est-ce que la pseudo-colonne ROWID ?

ROWID renvoie l'adresse de chaque ligne de la table. Oracle attribue un ROWID à chaque ligne. ROWID consiste à suivre

  • Le numéro d'objet de données de l'objet
  • Le bloc de données dans le fichier de données dans lequel réside la ligne
  • La position de la ligne dans le bloc de données (la première ligne est 0)
  • Le fichier de données dans lequel réside la ligne (le premier fichier est 1). Le numéro de fichier est relatif au tablespace.

Oracle utilise ROWID en interne pour accéder aux lignes. Par exemple, Oracle stocke ROWID dans l'index et l'utilise pour accéder à la ligne de la table.

Vous pouvez afficher le ROWID des lignes à l'aide de la commande SELECT comme suit :

sélectionnez rowid, emp_name de emp ;

ROWIDEMP_NAME

AAADC576474722aSAAA   Jean

Oracle fournit un package appelé DBMS_ROWID pour décoder ROWID.

Une fois qu'une ligne est affectée à un ROWID, Oracle ne modifie pas le ROWID pendant la durée de vie de la ligne. Mais cela change lorsque la table est reconstruite Lorsque des lignes sont déplacées sur la partition ou que la table est réduite

Types d'index dans oracle avec exemple

Il existe 6 types d'index différents dans Oracle

(1) Arbre B

(2) Arbre B compressé

(3) Bitmap

(4) Basé sur la fonction

(5) Clé inversée (RKI)

(6) Tableau organisé par index (IOT).

Découvrons chacun d'eux en détail et comment créer un index dans oracle pour chacun de ces types

B – Indice d'arborescence :

  • Les index B-Tree (arbre équilibré) sont le type d'index le plus courant.
  • L'index B-Tree stocke le ROWID et la valeur de la clé d'index dans une structure arborescente.
  • Lors de la création d'un index, un bloc ROOT est créé, puis des blocs BRANCH sont créés et enfin des blocs LEAF.
  • Chaque branche contient la plage de données que contiennent ses blocs feuille, et chaque racine contient la plage de données que contiennent ses branches :
  • Les index B-Tree sont plus utiles sur les colonnes qui apparaissent dans la clause where (SELECT … WHERE EMPNO=1).
  • Le serveur Oracle maintient l'arborescence équilibrée en divisant les blocs d'index, lorsque de nouvelles données sont insérées dans la table.
  • Chaque fois qu'une instruction DML est exécutée sur la table de l'index, une activité d'index se produit, faisant croître l'index (ajouter des feuilles et des branches).

Avantages

  • Tous les blocs de feuilles de l'arbre sont à la même profondeur.
  • Les index B-tree restent automatiquement équilibrés.
  • Tous les blocs de l'arbre B sont remplis aux trois quarts en moyenne.
  • Les arbres B offrent d'excellentes performances de récupération pour un large éventail de requêtes, y compris les recherches de correspondance exacte et de plage.
  • Les insertions, les mises à jour et les suppressions sont efficaces, en maintenant l'ordre des clés pour une récupération rapide.
  • Les performances de B-tree sont bonnes pour les petites et les grandes tables, et ne se dégradent pas à mesure que la taille d'une table augmente.
CREATE   INDEX ON  (,…)TABLESPACE ;ExampleCreate index   scott.exp_idx   on table scott.example(  name)Tablespace TOOLS; 

Qu'est-ce que les index B-tree compressés

  • Les index B-Tree compressés sont construits sur de grandes tables, dans un environnement d'entrepôt de données. Dans ce type d'index, les occurrences en double de la même valeur sont éliminées, réduisant ainsi la quantité d'espace de stockage nécessaire à l'index.
  • Dans un index B-Tree compressé, pour chaque valeur de clé, une liste de ROWID est conservée
  • Spécifier le mot-clé COMPRESS lors de la création d'un index (CREATE INDEX … COMPRESS) créera un index B-Tree compressé.
  • Un index B-Tree standard peut être reconstruit à l'aide du mot-clé COMPRESS pour le compresser.
CREATE   INDEX ON  (,…)PCTFREE TABLESPACE Compress  

Qu'est-ce que les index bitmap

  • Les index bitmap conviennent mieux aux données à faible cardinalité distincte (par opposition aux index B-Tree).
  • Ce type d'index crée une carte binaire de toutes les valeurs d'index et stocke cette carte dans les blocs d'index, cela signifie que l'index nécessitera moins d'espace que l'index B-Tree.
  • Chaque bit du bitmap correspond à un rowid possible. Si le bit est défini, cela signifie que la ligne avec le rowid correspondant contient la valeur de la clé. Une fonction de mappage convertit la position du bit en un rowid réel, de sorte que l'index bitmap offre la même fonctionnalité qu'un index normal, même s'il utilise une représentation différente en interne. Si le nombre de valeurs de clé différentes est faible, les index bitmap sont très économes en espace
  • Lorsqu'il y a des index bitmap sur les tables, les mises à jour suppriment les verrous de table complets. Ainsi, l'index Bitmap est utile sur les grandes colonnes avec une faible activité DML (mises à jour peu fréquentes) ou sur les tables en lecture seule. C'est la raison pour laquelle vous constatez souvent que les index bitmap sont largement utilisés dans l'environnement d'entrepôt de données (DWH).
  • La structure de l'index bitmap contient une carte de bits qui indique la valeur dans la colonne, par exemple, pour la colonne GENDER, le bloc d'index contiendra le ROWID de départ, le ROWID de fin et le bitmap :
  • Les index bitmap sont très utiles lorsqu'ils sont créés sur des colonnes à faible cardinalité, utilisés avec l'opérateur AND &OR dans la condition de requête :
CREATE BITMAP  INDEX ON  (,…)PCTFREE TABLESPACE 

Exemple

CREATE BITMAP INDEX ON emp_data(gender);SELECT COUNT(*) FROM emp_dataWHERE GENDER=’M”;

Avantages des index bitmap

  • Réduction du temps de réponse pour les grandes catégories de requêtes
  • Une réduction substantielle de l'utilisation de l'espace par rapport aux autres techniques d'indexation
  • Gains de performances spectaculaires même sur du matériel très bas de gamme
  • DML et chargements parallèles très efficaces

Index basés sur les fonctions

Les index basés sur les fonctions sont des index créés sur des colonnes sur lesquelles une fonction est généralement appliquée.

Lors de l'utilisation d'une fonction sur une colonne indexée, l'index est ignoré, donc un index basé sur une fonction est très utile pour ces opérations.

CREATE INDEX ON  [ Function(,;ExampleCREATE INDEX EMP_IDX on EMP(UPPER(ENAME));SELECT *FROM EmpWHERE UPPER(Ename) like 'JOHN';

Qu'est-ce que les index à clé inversée

  • Ce sont des types spéciaux d'index B-Tree et sont très utiles lorsqu'ils sont créés sur des colonnes contenant des numéros séquentiels.
  • Lorsque vous utilisez un B-Tree standard, l'index se développera pour avoir de nombreuses branches et peut-être plusieurs niveaux, entraînant ainsi une dégradation des performances, le RKI résout le problème en inversant les octets de chaque clé de colonne et en indexant les nouvelles données.
  • Cette méthode distribue les données uniformément dans l'index. La création d'un RKI se fait à l'aide du mot-clé REVERSE :CREATE INDEX … ON … REVERSE ;
CREATE INDEX ON  ()TABLESPACE REVERSE ; ExempleCREATE INDEX emp_idx i ON emp_table (prénom, nom) REVERSE ;

Qu'est-ce que les tableaux organisés par index (IOT) ?

  • Lorsque nous utilisons B-Tree, les index Bitmap et Reverse Key sont utilisés pour les tables qui stockent les données de manière non ordonnée (tables Heap).
  • Ces index contiennent l'emplacement du ROWID de la ligne de table requise, permettant ainsi un accès direct aux données de la ligne
  • Un tableau organisé en index diffère d'une table ordinaire car les données de la table sont conservées dans son index associé. Les modifications apportées aux données de la table, telles que l'ajout de nouvelles lignes, la mise à jour de lignes ou la suppression de lignes, entraînent la mise à jour de l'index.
  • La table organisée en index est comme une table ordinaire avec un index sur une ou plusieurs de ses colonnes, mais au lieu de maintenir deux stockages séparés pour la table et l'index B-tree, le système de base de données ne maintient qu'un seul B- index d'arborescence qui contient à la fois la valeur de clé encodée et les valeurs de colonne associées pour la ligne correspondante. Plutôt que d'avoir le rowid d'une ligne comme deuxième élément de l'entrée d'index, la ligne de données réelle est stockée dans l'index B-tree. Les lignes de données sont construites sur la clé primaire de la table et chaque entrée d'index B-tree contient . Les tables organisées en index conviennent à l'accès aux données par la clé primaire ou toute clé qui est un préfixe valide de la clé primaire.
  • Il n'y a pas de duplication des valeurs de clé car seules les valeurs de colonne non clés sont stockées avec la clé. Vous pouvez créer des index secondaires pour fournir un accès efficace aux autres colonnes. Les applications manipulent la table organisée en index comme une table ordinaire, à l'aide d'instructions SQL. Cependant, le système de base de données effectue toutes les opérations en manipulant l'index B-tree correspondant.

Fonctionnalités du tableau organisé par index

  • La clé primaire identifie de manière unique une ligne ; la clé primaire doit être spécifiée
  • Accès basé sur la clé primaire
  • L'ID de ligne logique dans la pseudo-colonne ROWID permet de créer des index secondaires
  • La contrainte UNIQUE n'est pas autorisée mais les déclencheurs sont autorisés
  • Ne peut pas être stocké dans un cluster
  • Peut contenir des colonnes LOB mais pas des colonnes LONG
  • Distribution et réplication non prises en charge


CREATE TABLE command:CREATE TABLE …ORGANIZATION INDEX TABLESPACE … (spécifiez qu'il s'agit d'un IOT)PCTTHRESHOLD … (spécifiez le % de bloc à conserver afin de stocker les données de ligne, valide 0-50 (par défaut 50))INCLUDING … (spécifiez quelle colonne couper une ligne lorsque la longueur de la ligne dépasse PCTTHRESHOLD) OVERFLOW TABLESPACE … (spécifiez l'espace de table où la deuxième partie de la ligne sera stockée) MAPPING TABLE; (provoque la création d'une table de mappage, nécessaire lors de la création d'un index Bitmap sur IOT)

La table de mappage mappe les ROWID physiques de l'index aux ROWID logiques dans l'IOT. IOT utilise des ROWID logiques pour gérer l'accès à la table par index, car les ROWID physiques sont modifiés chaque fois que des données sont ajoutées ou supprimées de la table. Afin de distinguer l'IOT des autres index, interrogez la vue USER_INDEXES à l'aide de la colonne pct_direct_access. Seul IOT aura une valeur non NULL pour cette colonne.

Index de domaine d'application

Oracle fournit une indexation extensible pour accueillir des index sur des types de données complexes tels que des documents, des données spatiales, des images et des clips vidéo et pour utiliser des techniques d'indexation spécialisées.

Avec l'indexation extensible, vous pouvez encapsuler des routines de gestion d'index spécifiques à l'application en tant que type d'index objet de schéma et définissez un index de domaine (un index spécifique à l'application) sur les colonnes de table ou les attributs d'un type d'objet. L'indexation extensible fournit également un traitement efficace de l'opérateur spécifique à l'application s.

Le logiciel d'application, appelé cartouche e, contrôle la structure et le contenu d'un index de domaine. Le serveur Oracle interagit avec l'application pour créer, maintenir et rechercher l'index de domaine. La structure d'index elle-même peut être stockée dans la base de données Oracle sous forme de table organisée en index ou en externe sous forme de fichier.

Utilisation des index de domaine

Les index de domaine sont créés à l'aide de la logique d'indexation fournie par un type d'index défini par l'utilisateur. Un type d'index fournit un mécanisme efficace pour accéder aux données qui satisfont certains prédicats d'opérateur. Généralement, le type d'index défini par l'utilisateur fait partie d'une option Oracle, comme l'option Spatial.

Par exemple, le type SpatialIndex permet une recherche et une récupération efficaces des données spatiales qui chevauchent une zone de délimitation donnée.

La cartouche détermine les paramètres que vous pouvez spécifier lors de la création et de la maintenance de l'index de domaine. De même, les performances et les caractéristiques de stockage de l'index de domaine sont présentées dans la documentation spécifique de la cartouche.

Jusqu'à présent, nous avons couvert différents types d'index dans Oracle avec un exemple, voyons maintenant comment les modifier/supprimer/recréer

Comment recréer les index/reconstruire l'index dans Oracle

Nous pouvons utiliser l'instruction ALTER INDEX … REBUILD pour réorganiser ou compacter un index existant ou pour modifier ses caractéristiques de stockage

L'instruction REBUILD utilise l'index existant comme base pour le nouveau.

ALTER INDEX … RECONSTRUIRE est généralement plus rapide que de supprimer et de recréer un index.

Il lit tous les blocs d'index à l'aide d'E/S multiblocs, puis supprime les blocs de branche.

Un autre avantage de cette approche est que l'ancien index est toujours disponible pour les requêtes pendant la reconstruction.

Alter index    reconstruire ;Alter index    reconstruire  l'espace de table  ;

Comment rédiger des instructions qui évitent d'utiliser des index

  • Vous pouvez utiliser l'indicateur d'optimisation NO_INDEX pour donner au CBO une flexibilité maximale tout en interdisant l'utilisation d'un certain index.
  • Vous pouvez utiliser l'indicateur FULL pour forcer l'optimiseur à choisir une analyse complète de la table au lieu d'une analyse d'index.
  • Vous pouvez utiliser les conseils INDEX, INDEX_COMBINE ou AND_EQUAL pour forcer l'optimiseur à utiliser un index ou un ensemble d'index répertoriés au lieu d'un autre.

Comment collecter des statistiques pour les index

Les statistiques d'index sont collectées à l'aide de l'instruction ANALYZE INDEX ou dbms_stats.

Les options disponibles sont CALCULER/ESTIMER LES STATISTIQUES ou VALIDER LA STRUCTURE.

A partir de 10g, lors de la création de l'index, le calcul des statistiques se fait automatiquement

Lors de l'utilisation de la structure de validation, Oracle remplit la vue INDEX_STATS avec des statistiques liées à l'index analysé. Les statistiques contiennent le nombre de lignes et de blocs de feuilles (LF_ROWS, LF_BLKS), le nombre de lignes et de blocs de branches (BR_ROWS, BR_BLKS), le nombre de lignes de feuilles supprimées (DEL_LF_ROWS), l'espace utilisé (USED_SPACE), le nombre de clés distinctes (DISTINCT_KEYS) , etc. Ces statistiques peuvent être utilisées pour déterminer si l'index doit être reconstruit ou non

Comment Oracle décide-t-il de l'utilisation de l'index ?

Oracle décide automatiquement si l'index doit être utilisé par le moteur Optimizer.

Oracle décide d'utiliser ou non un index en fonction de la requête.

Oracle peut comprendre si l'utilisation d'un index améliorera les performances de la requête donnée. Si Oracle pense que l'utilisation d'un index améliorera les performances, il utilisera l'index, sinon il l'ignorera.

Comprenons par cet exemple

Nous avons une table emp  qui contient emp_name, salaire, dept_no , emp_no, date_of_joining et nous avons un index sur emp_name

Requête 1

select * from emp  where emp_name ='John' ;

La requête ci-dessus utilisera l'index car nous essayons d'obtenir des informations sur un emp basé sur le nom.

Requête 2

sélectionnez * dans emp ;

La requête ci-dessus n'utilisera pas l'index car nous essayons de trouver toutes les lignes de la table et nous n'avons pas de clause where dans la requête

Requête 3

select * from emp where dept_no =5 ;

La requête ci-dessus n'utilisera pas l'index car la clause where ne sélectionne pas la colonne qui a un index

Requête 4

select * from emp where substr(emp_name,1,4) ='XYZW';

La requête ci-dessus n'utilisera pas l'index car la clause where utilise la fonction sur la colonne et nous n'avons pas d'index fonctionnel sur emp_name

Comment créer ou reconstruire l'index en ligne ?

Oracle utilisé pour verrouiller la table sur laquelle l'index est créé tout au long du processus de création dans les anciennes versions. Cela rend la table indisponible pour la manipulation des données lors de la création de l'index.

Maintenant, avec 8i, Oracle a introduit la reconstruction en ligne de l'index où Oracle ne verrouille pas la table sur laquelle l'index est en cours de construction.

L'indexation en ligne est assurée par le mot-clé EN LIGNE.

CREATE   INDEX ON  (,…)PCTFREE TABLESPACE Online ; Alter index  reconstruire en ligne ;

En gros, avec une reconstruction en ligne, Oracle verrouille la table au début et à la fin de la création de l'index. Il permet des transactions intermédiaires. Le mécanisme a été bien amélioré avec 11g et 12c

Quels sont les inconvénients des  index

Les index augmentent les performances d'une requête de sélection, ils peuvent également diminuer les performances de manipulation des données.

De nombreux index sur une table peuvent ralentir considérablement les INSERTS et les DELETE

Plus il y a d'index sur la table, plus les insertions et les suppressions prendront de temps.

De même, chaque modification d'une colonne indexée nécessitera une modification de l'index.

Nous devons donc choisir très soigneusement les index et supprimer ceux qui ne sont pas utilisés.

Bien que l'espace supplémentaire occupé par les index soit également un facteur à prendre en compte, cela n'a peut-être pas beaucoup d'importance puisque le coût du stockage des données a considérablement diminué.

Qu'est-ce que les index inutilisables

Un index inutilisable est ignoré par l'optimiseur pour décider du plan d'explication

Il n'est pas non plus géré par DML, c'est-à-dire que mettre à jour, insérer, supprimer met à jour l'index

Il peut y avoir plusieurs raisons pour lesquelles l'index est dans un état inutilisable. Vous avez reconstruit la table mais n'avez pas reconstruit l'index, alors l'index sera dans un état inutilisable. Une autre raison de rendre un index inutilisable est d'améliorer les performances de chargement en masse. Une autre raison peut être que l'optimiseur récupère le mauvais index à chaque fois et que le temps est critique, vous pouvez donc décider de le rendre inutilisable

Un index ou une partition d'index inutilisable doit être reconstruit ou supprimé et recréé avant de pouvoir être utilisé. Tronquer une table rend valide un index inutilisable.

À partir d'Oracle Database 11g Release 2, lorsque vous rendez un index existant inutilisable, son segment d'index est supprimé.

La fonctionnalité des index inutilisables dépend de la configuration du paramètre d'initialisation SKIP_UNUSABLE_INDEXES.

Lorsque SKIP_UNUSABLE_INDEXES est TRUE (valeur par défaut), alors :

Les instructions DML sur la table se poursuivent, mais les index inutilisables ne sont pas conservés.

Les instructions DML se terminent par une erreur s'il existe des index inutilisables utilisés pour appliquer la contrainte UNIQUE.

Pour les index non partitionnés, l'optimiseur ne prend pas en compte les index inutilisables lors de la création d'un plan d'accès pour les instructions SELECT. La seule exception est lorsqu'un index est explicitement spécifié avec l'indicateur INDEX().

Lorsque SKIP_UNUSABLE_INDEXES est FALSE, alors :

Si des index ou des partitions d'index inutilisables sont présents, toutes les instructions DML qui entraîneraient la mise à jour de ces index ou partitions d'index se terminent par une erreur.

Pour les instructions SELECT, si un index inutilisable ou une partition d'index inutilisable est présent mais que l'optimiseur ne choisit pas de l'utiliser pour le plan d'accès, l'instruction continue. Cependant, si l'optimiseur choisit d'utiliser l'index inutilisable ou la partition d'index inutilisable, l'instruction se termine par une erreur.

Vues du dictionnaire de données sur les index

DBA_INDEXES ALL_INDEXES USER_INDEXES La vue DBA décrit les index sur toutes les tables de la base de données. La vue ALL décrit les index sur toutes les tables accessibles à l'utilisateur. La vue USER est limitée aux index appartenant à l'utilisateur. Certaines colonnes de ces vues contiennent des statistiques générées par le package DBMS_STATS ou l'instruction ANALYZE.
DBA_IND_COLUMNS ALL_IND_COLUMNS

USER_IND_COLUMNS

Ces vues décrivent les colonnes des index sur les tables. Certaines colonnes de ces vues contiennent des statistiques générées par le package DBMS_STATS ou l'instruction ANALYZE.
DBA_IND_EXPRESSIONS ALL_IND_EXPRESSIONS

USER_IND_EXPRESSIONS

Ces vues décrivent les expressions des index basés sur les fonctions sur les tables.
DBA_IND_STATISTICS ALL_IND_STATISTICS

USER_IND_STATISTICS

Ces vues contiennent des statistiques d'optimisation pour les index.

comment trouver des index sur une table

set pagesize 50000 verify off echo offcol table_name head 'Table Name' format a20col index_name head 'Index Name' format a25col column_name head 'Column Name' format a30break on table_name on index_nameselect     table_name, index_name, column_namefrom all_ind_columnswhere table_name like upper('&Table_Name ') Trier par table_name, index_name, column_position/

Comment déterminer la taille de l'index

Taille de l'INDEX sélectionnez segment_name,sum(bytes)/1024/1024/1024 as "SIZE in Go" from user_segments where segment_name='INDEX_NAME' group by segment_name;OUselect owner,segment_name,sum(bytes)/1024/1024/1024 as "SIZE in Go" de dba_segments où owner='SCHEMA_NAME' et segment_name='INDEX_NAME' groupe par propriétaire, nom_segment ; Liste de la taille de tous les INDEX d'un UTILISATEUR select segment_name,sum(bytes)/1024/1024/1024 as "SIZE in GB" from user_segments where segment_type='INDEX' group by segment_name order by "SIZE in GB" desc;OUselect owner,segment_name,sum(bytes)/1024 /1024/1024 as "SIZE in GB" from dba_segments where owner='SCHEMA_NAME' and segment_type='INDEX' group by owner,segment_name order by "SIZE in GB" desc;Somme des tailles de tous les index select owner,sum(bytes)/1024/1024/1024 as "SIZE in GB" from dba_segments where owner='SCHEMA_NAME' and segment_type='INDEX' group by owner ;

Comment déterminer l'index  définition

set long 4000select dbms_metadata.get_ddl('INDEX','',' 

Comment déterminer les statistiques de l'index

set pages 250set linessize 100set verify offcol table_name format a24 header 'TABLE NAME'col index_name format a23 header 'INDEX NAME'col u format a1 header 'U'col blevel format 0 header 'BL'col leaf_blocks format 999990 header 'LEAF |BLOCKS'col distinct_keys format 9999990 titre 'DISTINCT|KEYS'col avg_leaf_blocks_per_key format 9999990 titre 'LEAF|BLKS|/KEY'col avg_data_blocks_per_key format 9999990 titre 'DATA|BLKS|/KEY'rembreak on table_nameremselect table_name, index_name,decode( unicité, 'UNIQUE', 'U', null ) u,blevel, leaf_blocks, distinct_keys,avg_leaf_blocks_per_key, avg_data_blocks_per_keyfrom sys.dba_indexeswhere table_owner like upper('&owner')and table_name like upper('&table')order by table_owner, table_name, index_name; 

 Articles connexes

tables externes dans Oracle :consultez cet article pour plus d'informations sur l'utilisation des tables externes dans Oracle avec un exemple, comment créer une table externe, comment l'utiliser
Oracle Créer une table :les tables sont l'unité de base des données stockage dans une base de données Oracle. nous couvrons comment utiliser la commande Oracle create table pour créer une table avec une clé étrangère / clé primaire br/>Rechercher l'état des index et les colonnes attribuées pour une table
Index virtuel dans Oracle :qu'est-ce que l'index virtuel dans Oracle ? Utilisations, limitation, avantage et comment utiliser pour 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
Partition Oracle Index :Comprendre l'index de partition Oracle, Qu'est-ce que les index non partitionnés globaux ?, Qu'est-ce que les index préfixés locaux, index local non préfixé

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