2010-08-11 94 views
2

是否有可能使用SQL * Plus查看索引內部的內容?如何查看Oracle索引的內容?

如果我有這樣的一個表:

Table A 
------------------------ 
rowid | id name 
123 | 1 A 
124 | 4 G 
125 | 2 R 
126 | 3 P 

其中id是主鍵,我預計該指數將是這樣的

index on A.id 
------------- 
id rowid 
1 123 
2 125 
3 126 
4 124 

是否有使用其中的一些SQL查詢我實際上可以看到索引的內容?

回答

4

沒有簡單的查詢 - 您可以轉儲表或索引塊來跟蹤文件,但是您必須確定您感興趣的塊。Dion Cho有一個example說明如何使用SQL處理此塊轉儲,但這並不是因爲內心的淡淡。

但是,你可以這樣做:

select /* index_ffs (a [name of index]) */ 
     id, rowid 
    from a 
where id is not null 
order by id, rowid; 

Oracle不寫,所有的值被索引是空的索引條目,所以如果ID是空的,我們需要過濾那些出。 index_ffs提示強制Oracle滿足讀取索引塊的查詢,而不是數據塊。這個「解決方案」不顯示將在根或分支塊中的數據,而塊轉儲可以。