SHOW INDEXES

Lista todos os índices em sua conta para os quais você tem privilégios de acesso.

Consulte também:

CREATE HYBRID TABLE , CREATE INDEX , DROP INDEX , DROP TABLE , DESCRIBE TABLE , SHOW HYBRID TABLES

Sintaxe

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

Parâmetros

TERSE

Retorna apenas um subconjunto das colunas de saída:

  • created_on

  • name

  • kind

  • database_name

  • schema_name

LIKE 'pattern'

Opcionalmente, filtra a saída do comando pelo nome do objeto. O filtro utiliza correspondência de padrão que não diferencia maiúsculas e minúsculas, com suporte para caracteres curinga SQL (% e _).

Por exemplo, os seguintes padrões retornam os mesmos resultados:

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

. padrão: sem valor (nenhuma filtragem é aplicada à saída).

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

Filtra a saída pelo banco de dados, esquema, tabela ou conta especificado.

Se você especificar a palavra-chave ACCOUNT, então o comando recuperará os registros de todos os esquemas em todos os bancos de dados da conta atual.

Se você especificar a palavra-chave DATABASE, então:

  • Se você especificar um db_name, então o comando recupera registros para todos os esquemas do banco de dados especificado.

  • Se você não especificar um db_name, então:

    • Se houver um banco de dados atual, então o comando recuperará os registros de todos os esquemas do banco de dados atual.

    • Se não houver um banco de dados atual, então o comando recuperará registros para todos os bancos de dados e esquemas da conta.

Se você especificar a palavra-chave SCHEMA, então:

  • Se você especificar um nome de esquema qualificado (por exemplo, my_database.my_schema), então o comando recupera os registros para o banco de dados e esquema especificados.

  • Se você especificar um schema_name não qualificado, então:

    • Se houver um banco de dados atual, então o comando recupera os registros para o esquema especificado no banco de dados atual.

    • Se não houver um banco de dados atual, então o comando exibe o erro SQL compilation error: Object does not exist, or operation cannot be performed.

  • Se você não especificar um schema_name, então:

    • Se houver um banco de dados atual, então:

      • Se houver um esquema atual, então o comando recupera registros para o esquema atual no banco de dados atual.

      • Se não houver um esquema atual, então o comando recupera os registros de todos os esquemas no banco de dados atual.

    • Se não houver um banco de dados atual, então o comando recupera os registros de todos os bancos de dados e todos os esquemas da conta.

Se você especificar a palavra-chave TABLE sem um table_name, então:

  • Se houver um banco de dados atual, então:

    • Se houver um esquema atual, então o comando recupera registros para o esquema atual no banco de dados atual.

    • Se não houver um esquema atual, então o comando recupera os registros de todos os esquemas no banco de dados atual.

  • Se não houver um banco de dados atual, então o comando recupera os registros de todos os bancos de dados e todos os esquemas da conta.

Se você especificar um <table_name> (com ou sem a palavra-chave TABLE), então:

  • Se você especificar um <table_name> totalmente qualificado (por exemplo, my_database_name.my_schema_name.my_table_name), então o comando recuperará todos os registros para a tabela especificada.

  • Se você especificar um esquema qualificado <table_name> (por exemplo, my_schema_name.my_table_name), então:

    • Se houver um banco de dados atual, o comando recupera todos os registros da tabela especificada.

    • Se não existir um banco de dados atual, então o comando exibe um erro semelhante a Cannot perform SHOW <tipo_objeto>. This session does not have a current database....

  • Se você especificar um <table_name não qualificado>, então:

    • Se houver um banco de dados atual e um esquema atual, então o comando recupera os registros para a tabela especificada no esquema atual do banco de dados atual.

    • Se não existir um banco de dados atual ou se não existir um esquema atual, então o comando exibirá um erro semelhante a: SQL compilation error: <objeto> does not exist or not authorized..

Padrão: depende se a sessão tem ou não um banco de dados em uso no momento:

  • Banco de dados: DATABASE é o padrão (ou seja, o comando retorna os objetos nos quais você tem privilégios para visualizar no banco de dados).

  • Sem banco de dados: ACCOUNT é o padrão (ou seja, o comando retorna os objetos que você tem privilégios de visualização em sua conta).

STARTS WITH 'name_string'

Opcionalmente, filtra a saída do comando com base nos caracteres que aparecem no início do nome do objeto. A cadeia de caracteres deve ser colocada entre aspas simples e faz distinção entre letras maiúsculas e minúsculas.

Por exemplo, as seguintes cadeias de caracteres retornam resultados diferentes:

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

. Padrão: sem valor (nenhuma filtragem é aplicada à saída)

LIMIT rows [ FROM 'name_string' ]

Opcionalmente, limita o número máximo de linhas retornadas, ao mesmo tempo em que permite a «paginação» dos resultados. O número real de linhas retornadas pode ser menor que o limite especificado. Por exemplo, o número de objetos existentes é menor que o limite especificado.

A subcláusula opcional FROM 'name_string' serve efetivamente como um “cursor” para os resultados. Isso permite obter o número especificado de linhas seguindo a primeira linha cujo nome do objeto corresponde à cadeia de caracteres especificada:

  • A cadeia de caracteres deve ser colocada entre aspas simples e faz distinção entre letras maiúsculas e minúsculas.

  • A cadeia de caracteres não precisa incluir o nome completo do objeto; também é permitido usar nomes parciais.

Padrão: nenhum valor (nenhum limite é aplicado à saída)

Nota

Para comandos SHOW que oferecem suporte às cláusulas FROM 'name_string' e STARTS WITH 'name_string', você pode combinar ambas as cláusulas na mesma instrução. No entanto, ambas as condições devem ser cumpridas ou elas se cancelam mutuamente e nenhum resultado é retornado.

Além disso, os objetos são devolvidos em ordem lexicográfica por nome, portanto FROM 'name_string' só retorna linhas com um valor lexicográfico maior que as linhas retornadas por STARTS WITH 'name_string'.

Por exemplo:

  • ... STARTS WITH 'A' LIMIT ... FROM 'B' não retornaria nenhum resultado.

  • ... STARTS WITH 'B' LIMIT ... FROM 'A' não retornaria nenhum resultado.

  • ... STARTS WITH 'A' LIMIT ... FROM 'AB' retornariam resultados (se alguma linha corresponder às cadeias de caracteres de entrada).

Saída

Coluna

Descrição

created_on

Data e hora em que o índice foi criado.

name

Nome do índice.

is_unique

Se o índice é um índice exclusivo.

columns

Lista de colunas indexadas.

included_columns

Lista de colunas abordadas.

table

Nome da tabela.

database_name

Banco de dados no qual o índice está armazenado.

schema_name

Esquema no qual o índice está armazenado.

owner

Função proprietária do índice.

owner_role_type

Tipo da função do proprietário.

Notas de uso

  • O comando não precisa de um warehouse em funcionamento para ser executado.

  • O comando retorna apenas objetos para os quais a função atual do usuário atual recebeu pelo menos um privilégio de acesso.

  • O privilégio de acesso MANAGE GRANTS permite implicitamente que seu titular consulte todos os objetos da conta. Por padrão, somente o administrador de conta (usuários com a função ACCOUNTADMIN) e o administrador de segurança (usuários com a função SECURITYADMIN) têm o privilégio MANAGE GRANTS.

  • Para pós-processar a saída deste comando, você pode usar o operador de canal (->>) ou a função RESULT_SCAN. Ambos os constructos tratam a saída como um conjunto de resultados que você pode consultar.

    Os nomes das colunas de saída para este comando são gerados em minúsculas. Se você consumir um conjunto de resultados deste comando com o operador de canal ou a função RESULT_SCAN, use identificadores entre aspas duplas para os nomes das colunas na consulta para garantir que eles correspondam aos nomes das colunas na saída que foi verificada. Por exemplo, se o nome de uma coluna de saída for type, especifique "type" para o identificador.

Exemplos

Esses exemplos de SHOW INDEX usam o banco de dados e esquema atuais.

Retorna uma lista concisa de índices com a cadeia de caracteres DEVICE em seus nomes:

SHOW TERSE INDEXES LIKE '%DEVICE%';
Copy
+-------------------------------+---------------------------------------+-----------------+---------------+-------------+
| created_on                    | name                                  | kind            | database_name | schema_name |
|-------------------------------+---------------------------------------+-----------------+---------------+-------------|
| 2024-08-29 12:24:49.197 -0700 | SYS_INDEX_SENSOR_DATA_DEVICE1_PRIMARY | KEY_VALUE_INDEX | HT_SENSORS    | HT_SCHEMA   |
| 2024-08-29 12:24:49.197 -0700 | DEVICE_IDX                            | KEY_VALUE_INDEX | HT_SENSORS    | HT_SCHEMA   |
| 2024-08-29 14:03:36.537 -0700 | SYS_INDEX_SENSOR_DATA_DEVICE2_PRIMARY | KEY_VALUE_INDEX | HT_SENSORS    | HT_SCHEMA   |
| 2024-08-29 14:03:36.537 -0700 | DEVICE_IDX                            | KEY_VALUE_INDEX | HT_SENSORS    | HT_SCHEMA   |
+-------------------------------+---------------------------------------+-----------------+---------------+-------------+

Retorna somente índices com colunas cobertas (included_columns). Use o operador de canal (->>) para selecionar linhas e colunas específicas da saída completa do comando SHOW INDEXES.

SHOW INDEXES
  ->> SELECT "name",
             "is_unique",
             "table",
             "columns",
             "included_columns",
             "database_name",
             "schema_name"
        FROM $1
        WHERE "included_columns" != '[]';
Copy

A saída a seguir mostra apenas o resultado de consulta SELECT. Um índice se qualifica para a condição da cláusula WHERE:

+------------+-----------+---------------------+-------------+------------------+---------------+-------------+
| name       | is_unique | table               | columns     | included_columns | database_name | schema_name |
|------------+-----------+---------------------+-------------+------------------+---------------+-------------|
| DEVICE_IDX | N         | SENSOR_DATA_DEVICE2 | [DEVICE_ID] | [TEMPERATURE]    | HT_SENSORS    | HT_SCHEMA   |
+------------+-----------+---------------------+-------------+------------------+---------------+-------------+