pourquoi le blevel est-il nul pour certains index dans Oracle DB?

Jessayais de voir les niveaux de larbre binaire pour les index et à ma grande surprise, je vois que certains dentre eux sont définis sur null.

SELECT index_name, blevel FROM user_indexes ORDER BY 2 desc; 

Leur nom commence par « SYS _ » (image ci-dessous). Donc je suppose que ce sont des index générés par le système? Peut-être des clés primaires? Quoi quil en soit, je suis curieux de savoir pourquoi ils sont nuls. Je peux comprendre si la valeur est 0, ce qui signifie que tout est dans les nœuds feuilles et quil ne faudra quun saut pour une analyse unique pour obtenir les données.

entrez la description de limage ici

Commentaires

  • Ils ressemblent à des objets de schéma sys donc ils pourraient jouer selon leurs propres règles. Mais la réponse la plus probable est quils ne contiennent aucun nœud.
  • Pour un certain nombre de colonnes de statistiques (y compris le blevel) dans *_indexes docs dit " Les noms de colonne suivis dun astérisque ne sont renseignés que si vous collectez des statistiques sur lindex à laide de linstruction ANALYZE ou du package DBMS_STATS. " Je suppose que le moteur nexécute ' aucune de ces commandes contre certains ou tous les index des tables système …
  • Ce sont des index de lob, cela peut simplement être une propriété dindex de lob. Vous pouvez essayer de les collecter, mais je ne suis pas sûr de ce que ferait oracle en interne.

Réponse

Index dont le nom commençant par SYS_IL.. sont des index LOB.

BLEVEL est une propriété des index B-tree, et ne ont un sens pour les index LOB.

Même si vous collectez des statistiques, BLEVEL pour un tel index restera nul.

Réponse

Merci @Balazs pour linformation.

Jai fait quelques recherches autour de ça et ça ressemble à –

Un lob est simplement un pointeur et il pointe vers des blocs de données qui font ce lob. Ainsi, lorsque vous créez une colonne de lob, vous obtenez automatiquement un index de lob afin que les morceaux de données de lob soient récupérés plus rapidement et le segment qui contient ces morceaux de données.

Utilisez les requêtes suivantes pour vérifier la même chose –

SELECT index_name,INDEX_TYPE, blevel FROM user_indexes where blevel is null and index_name like "SYS_IL%%" ORDER BY 3 desc; 

Pour voir les segments associés –

select segment_name, segment_type, tablespace_name, bytes, max_extents from user_segments where segment_name in ( SELECT index_name FROM user_indexes where blevel is null and index_name like "SYS_IL%%" ); 

Vous pouvez supprimer ceci en déposant cette table qui a une colonne lob ou la colonne elle-même.

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *