2014-01-24 15 views
7

Ich habe versucht, die folgende Abfrage auszuführen, um die Anzahl von index aus meinem Schema zu erhalten.Graf von USER_INDEXES und ALL_INDEXES

select count(*) from USER_INDEXES; --which mir eine Anzahl von 397 gab

Aber select count(*) from ALL_INDEXES where table_owner ='MY_SCHEMA'; - gab mir 357.

Was es klingt? Beide sollten gleich sein, oder?

Wenn von Oracle SQL developer durch Zählen der Indizes selbst überprüft, gab mir 397

+1

Sind Sie sicher, dass diese Zahlen korrekt sind? Sie schauen zurück zu mir. Ich würde erwarten, dass 'ALL_INDEXES' mehr als' USER_INDEXES' zurückgibt. –

+0

@jonearles: Ja. Es ist korrekt. Ich habe das nachgeprüft. – NaaN

Antwort

8

Dies liegt daran, dass die Ansicht ALL_INDEXES enthält alle Indizes der aktuelle Benutzer die Fähigkeit zu ändern hat. In dieser Ansicht wird der LOB-Index nicht angezeigt, da LOB-Indizes nicht umbenannt, neu erstellt oder geändert werden können.

Während USER_INDEXES Ansicht enthält alle Indizes, die der Benutzer besitzt. Der LOB-Index befindet sich in dieser Ansicht, wenn der Benutzer, der ihn abfragt, derselbe Benutzer ist, der ihn erstellt hat.

+1

Danke für eine neue Information. Also sollten wir mit 'USER_INDEXES' gehen. – NaaN

+0

@codeforfood, Ja. Es ist besser, mit der 'USER_INDEXES'-Ansicht zu gehen, um alle Indexdetails einschließlich der Lob-Typen zu erhalten. – Dba