Jag försökte se b-trädnivåerna för index och till min förvåning ser jag att några av dem är inställda på null.
SELECT index_name, blevel FROM user_indexes ORDER BY 2 desc;
Deras namn börjar med ”SYS _” (bilden bifogas nedan). SÅ jag antar att de är systemgenererade index? Kanske av primärnycklar? Hur som helst är jag nyfiken på varför de är noll. Jag kan förstå om värdet är 0 vilket betyder att allt finns i bladnoder och det tar bara 1 hopp för unik skanning för att få data.
Kommentarer
Svar
Index vars namn start med SYS_IL..
är LOB-index.
BLEVEL
är en egenskap för B-trädindex och gör inte vara meningsfullt för LOB-index.
Även om du samlar in statistik förblir BLEVEL
för ett sådant index noll.
Svar
Tack @Balazs för informationen.
Forskade kring detta och ser ut som –
En lob är helt enkelt en pekare och den pekar på en dataklump som gör den till lob. Så när du skapar en lob-kolumn får du automatiskt ett lob-index så att lob-databitar hämtas snabbare och segment som innehåller dessa databitar.
Använd följande frågor för att verifiera detsamma –
SELECT index_name,INDEX_TYPE, blevel FROM user_indexes where blevel is null and index_name like "SYS_IL%%" ORDER BY 3 desc;
För att se associerade segment –
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%%" );
Du kan radera detta genom att släppa den tabellen som har lobkolumn eller själva kolumnen.
*_indexes
docs säger " Kolumnnamn följt av en asterisk fylls bara i om du samlar in statistik om indexet med ANALYZE-satsen eller DBMS_STATS-paketet. " Jag antar att motorn inte ' t utför någon av dessa kommandon mot några eller alla systemtabellindex …