sql - 如何查看 Oracle 索引的内容?

标签 sql database oracle indexing sqlplus

是否可以使用 SQL*Plus 查看索引内的内容?

如果我有一个这样的表:

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 查询可以让我实际查看索引的内容?

最佳答案

这不是一个简单的查询 - 您可以将表或索引 block 转储到跟踪文件,但您必须识别您感兴趣的 block 。Dion Cho 有一个 example介绍如何使用 SQL 处理此 block 转储,但这不适合胆小的人。

但是,您可以这样做:

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 满足读取索引 block 而不是数据 block 的查询。此“解决方案”不显示根或分支 block 中的数据,而 block 转储可以。

关于sql - 如何查看 Oracle 索引的内容?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3459931/

相关文章:

php - 注册无效

java - 递归计算它有多少级别和 child 数量

c# - ODP.net 将 UDT 作为表传递给 C# 中的存储过程

java - PL/SQL对象成员函数-java方法

sql - Mysql SQL连接问题

java - 在Java中准备动态Statement的正确方法

sql - 是否使用 Null 来表示 Value Bad Practice?

php - phpmyadmin 数据库中表的数量 4

sql-server - 与查询单独运行时相比,查询在跟踪中显示的持续时间值更大

php - 如何解决ORA-12154 : TNS error when using PHP OCI8 oci_connect in Azure