SHOW INDEXES

列出账户中您具有访问权限的所有索引。

另请参阅:

CREATE HYBRID TABLECREATE INDEXDROP INDEXDROP TABLEDESCRIBE TABLESHOW HYBRID TABLES

语法

SHOW [ TERSE ] INDEXES
  [ LIKE '<pattern>' ]
  [ IN { ACCOUNT | DATABASE [ <database_name> ] | SCHEMA [ <schema_name> ] | TABLE | TABLE <table_name> } ]
  [ STARTS WITH '<name_string>' ]
  [ LIMIT <rows> [ FROM '<name_string>' ] ]
Copy

参数

TERSE

仅返回输出列的子集:

  • created_on

  • name

  • kind

  • database_name

  • schema_name

LIKE 'pattern'

(可选)按对象名称筛选命令输出。筛选器使用 不区分大小写 的模式匹配,并支持 SQL 通配符(%_)。

例如,以下模式返回 相同的 结果:

... LIKE '%testing%' ...
... LIKE '%TESTING%' ...

. 默认:无值(不对输出应用筛选)。

IN { ACCOUNT | DATABASE [ database_name ] | SCHEMA [ schema_name ] | TABLE | TABLE table_name }

按指定的数据库、架构、表或账户筛选输出。

如果您指定关键字 ACCOUNT,则该命令将检索当前账户的所有数据库中所有架构的记录。

如果您指定关键字 DATABASE,那么:

  • 如果指定 db_name,则该命令将检索指定数据库的所有架构的记录。

  • 如果您未指定 db_name,那么:

    • 如果存在当前数据库,则该命令将检索当前数据库中所有架构的记录。

    • 如果当前没有数据库,则该命令将检索账户中所有数据库和架构的记录。

如果您指定关键字 SCHEMA,那么:

  • 如果指定限定架构名称(例如,my_database.my_schema),则该命令将检索指定数据库和架构的记录。

  • 如果您指定了未限定的 schema_name,那么:

    • 如果存在当前数据库,则该命令将检索当前数据库中指定架构的记录。

    • 如果当前没有数据库,则该命令会显示错误 SQL compilation error: Object does not exist, or operation cannot be performed

  • 如果您未指定 schema_name,那么:

    • 如果当前有数据库,那么:

      • 如果当前存在架构,则该命令将检索当前数据库中当前架构的记录。

      • 如果不存在当前架构,则该命令将检索当前数据库中所有架构的记录。

    • 如果当前没有数据库,则该命令将检索账户中所有数据库和所有架构的记录。

如果指定了不带 table_nameTABLE 关键字,则:

  • 如果当前有数据库,那么:

    • 如果当前存在架构,则该命令将检索当前数据库中当前架构的记录。

    • 如果不存在当前架构,则该命令将检索当前数据库中所有架构的记录。

  • 如果当前没有数据库,则该命令将检索账户中所有数据库和所有架构的记录。

如果指定了 :code:` <table_name> ` (带或不带 TABLE 关键字),则:

  • 如果指定了完全限定的 :code:` <table_name> ` (例如 my_database_name.my_schema_name.my_table_name),则该命令将检索指定表的所有记录。

  • 如果指定了架构限定的 :code:` <table_name> ` (例如 my_schema_name.my_table_name),则:

    • 如果当前数据库存在,该命令将检索指定表的所有记录。

    • 如果当前数据库不存在,该命令将显示如下所示的错误: :code:` Cannot perform SHOW <object_type>.This session does not have a current database...`.

  • 如果您指定了未限定的 <table_name>,那么:

    • 如果有当前数据库和当前架构,该命令将检索当前数据库的当前架构中指定表的记录。

    • 如果没有当前数据库或没有当前架构,该命令将显示类似于以下这样的错误::code:`SQL compilation error: <object> does not exist or not authorized. `

默认:取决于会话当前是否正在使用数据库:

  • 数据库:DATABASE 是默认值(即该命令返回您有权在数据库中查看的对象)。

  • 无数据库:ACCOUNT 是默认值(即该命令返回您有权在账户中查看的对象)。

STARTS WITH 'name_string'

(可选)根据对象名称开头显示的字符筛选命令输出。该字符串必须放在单引号内并且 区分大小写

例如,以下字符串会返回 不同的 结果:

... STARTS WITH 'B' ...
... STARTS WITH 'b' ...

. 默认:无值(不对输出应用筛选)

LIMIT rows [ FROM 'name_string' ]

(可选)限制返回的最大行数,同时还对结果启用“分页”功能。返回的实际行数可能小于指定的限制。例如,现有对象的数量小于指定的限制。

可选的 FROM 'name_string' 分子句实际上会充当结果的“游标”。这样就可以提取对象名称与指定字符串匹配的第一行之后的指定行数:

  • 该字符串必须放在单引号内并且 区分大小写

  • 该字符串不必包含完整的对象名称;支持部分名称。

默认:无值(不对输出应用限制)

备注

对于支持 FROM 'name_string'STARTS WITH 'name_string' 的 SHOW 子句,您可以将这两个子句组合在同一语句中。但是,两个条件都必须满足,否则它们相互抵消,不返回任何结果。

此外,对象按名称的字典顺序返回,因此 FROM 'name_string' 仅返回字典值高于 STARTS WITH 'name_string' 所返回行的行。

例如:

  • ... STARTS WITH 'A' LIMIT ... FROM 'B' 不会返回任何结果。

  • ... STARTS WITH 'B' LIMIT ... FROM 'A' 不会返回任何结果。

  • ... STARTS WITH 'A' LIMIT ... FROM 'AB' 将返回结果(如果有任何行与输入字符串匹配)。

使用说明

  • 此命令只能用于删除 二级 索引。要删除用于执行唯一和/或外键约束的索引,请使用 ALTER TABLE 命令。

  • 要在 混合表 上使用二级索引,必须授予对该表的 SELECT 权限。

输出

描述

created_on

索引的创建日期和时间。

name

索引的名称。

is_unique

索引是否是唯一索引。

columns

索引列的列表。

included_columns

覆盖列的列表。

table

表的名称。

database_name

存储索引的数据库。

schema_name

存储索引的架构。

owner

拥有索引的角色。

owner_role_type

所有者的角色类型。

语言: 中文