Envoyé par
Ikebukuro
1) quelle est la taille d'un bloc racine/branche/feuille dans un index B-Tree?
Il est de la taille du DB_BLOCK_SIZE.
2) quel est le nombre d'enregistrements dans un bloc d'un index B-Tree?
Cela dépend de la valeur indexée et de sa longueur (number, varchar...).
3) comment est alimenté le bloc racine?
Alors là je n'ai pas trouvé de réponse à mes questions donc je me permets de les reposer.
3.1) Cas d'un index sur un champ unique réparti de façon homogène : si j'ai 100 enregs dans le bloc racine, pour une table de 1 million d'enregs, avec l'index sur un champ ID number(10) allant de 1 à 1 000 000, est-ce qu'on fait 1 000 000/100 = 10 000 soit dans ma racine j'aurais 100 ID allant de 10 000 à 1 000 000 par tranche de 10 000 soit 10 000, 20 000, 30 000 ... 1 000 000?
Quid du cas où
3.2) Cas d'un index sur un champ unique réparti de façon non homogène : si j'ai 100 enregs dans le bloc racine, pour une table de 1 million d'enregs, avec l'index sur un champ ID number(10) allant de 1 à 1 000 000 000 (un milliard) MAIS avec 99,9999% des données allant de 1 à 999 999 ET une seule donnée au delà du million, valant 1 000 000 000 (un milliard), est-ce qu'on fait 1 000 000 000/100 = 10 000 000 soit dans ma racine j'aurais 100 ID allant de 10 000 000 à 1 000 000 000 par tranche de 10 000 000 soit 10 000 000, 20 000 000, 30 000 000 ... 1 000 000 000 sachant que cela ne reflète ABSOLUMENT pas la réalité?
3.3) cas d'un index sur un champ non unique : table avec un million d'enregs, je crée un index sur le champ Nom. Est-ce que Oracle va d'abord récupérer les bornes min et max de ce champ et les utiliser pour construire sa racine? Si le premier nom est "Abra" et le dernier "Zyblo", et qu'il y a 10 000 noms différents MAIS avec une répartition non homogène, comment Oracle va t-il choisir les N enregs qui vont composer la racine?
4) Est-ce que pour une valeur indexée, cette valeur peut se trouver dans N feuilles?
Oui.
5) Est-ce que dans les blocs Racine et Branches le Rowid est présent?
Non, le ROWID n'est que dans les feuilles.
6) Est-ce que les rowid d'un bloc feuille sont lus un par un ou bien, pour une même valeur recherchée, on les lit en bloc pour diminuer le nombre d'aller/retours entre l'index et la table? Exemple : je recherche le mais des employés de nom "DURAND"; il y a 50 "DURAND" dans la société et j'accède au bloc feuille de l'index sur le nom contenant le nom "DURAND" : il y a 50 rowid; Oracle les lit comment : un par un, en bloc?
Oracle les lit un par un.
Merci par avance pour vos réponses.
Partager