【问题标题】:How to see a list of all the indexes (including implicit ones) in SQL*Plus?如何查看 SQL*Plus 中所有索引(包括隐式索引)的列表?
【发布时间】:2010-08-11 12:37:22
【问题描述】:

有没有办法使用 SQL*Plus 获取特定表上所有索引的列表?

我创建了一个表

CREATE TABLE temp(
id NUMBER PRIMARY KEY,
name VARCHAR2(20));

应该在主键 (id) 上创建一个隐式索引。我怎样才能看到那个索引?

SELECT * FROM all_indexes WHERE table_name = 'temp';

给予

没有选择行

【问题讨论】:

  • 这样的表存储大写试试 select * from all_indexes where table_name = 'TEMP';
  • @Michael Pakhantsov,@dcp:谢谢!使用大写,我看到了索引。

标签: sql indexing sqlplus


【解决方案1】:

SELECT INDEX_NAME FROM ALL_INDEXES WHERE TABLE_NAME = 'your_table'

注意: 如果您想将搜索限制为特定架构,您也可以这样做:

SELECT INDEX_NAME FROM ALL_INDEXES WHERE TABLE_NAME = 'your_table' AND OWNER = 'your_owner'

这在您可能在多个架构中具有相同表名的情况下很有用。

另外,请记住,Oracle 将表名存储为大写,因此在您的示例中,您需要这样做:

select * from all_indexes where table_name = 'TEMP';

【讨论】:

    【解决方案2】:
    SELECT * from USER_INDEXES
    WHERE TABLE_NAME = UPPER('YourTableName')
    

    【讨论】:

    • 只有当他以 YourTableName 的架构所有者身份登录时才有效。
    【解决方案3】:

    请把你的表名写成大写

    SELECT * FROM all_indexes WHERE lower(table_name) = 'temp';
    

    【讨论】:

      【解决方案4】:

      如果您想显示数据库中的所有索引,您可以尝试。

      use information_schema;
      SELECT * FROM statistics;
      

      【讨论】:

      • OP 正在使用 Oracle(在他们的问题中,他们提到了 SQL*Plus,这是一个 Oracle 工具)。您的答案不适用于 Oracle。
      猜你喜欢
      • 1970-01-01
      • 2023-02-23
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2010-12-11
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多