SHOW INDEXES¶
アクセス権限があるアカウント内のすべてのインデックスをリストします。
- こちらもご参照ください。
CREATE HYBRID TABLE , CREATE INDEX , DROP INDEX , DROP TABLE , DESCRIBE TABLE , SHOW 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>' ] ]
パラメーター¶
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_name
なしでキーワードTABLE
を指定すると、次のようになります。現在のデータベースがある場合は、次のようになります。
現在のスキーマがある場合、コマンドは、現在のデータベースにある現在のスキーマの記録を取得します。
現在のスキーマがない場合、コマンドは、現在のデータベースにあるスキーマすべての記録を取得します。
現在のデータベースがない場合、コマンドは、アカウントにあるすべてのデータベースとすべてのスキーマの記録を取得します。
<テーブル名>
(キーワードTABLE
の有無にかかわらず)を指定すると、次のようになります。完全修飾された
<テーブル名>
(例:my_database_name.my_schema_name.my_table_name
)を指定すると、コマンドは指定されたテーブルのすべての記録を取得します。スキーマ修飾された
<テーブル名>
(例:my_schema_name.my_table_name
)を指定すると、次のようになります。現在のデータベースが存在する場合、コマンドは、指定されたテーブルのすべての記録を取得します。
現在のデータベースが存在しない場合、コマンドは
Cannot perform SHOW <オブジェクト型>. This session does not have a current database...
のようなエラーを表示します。
修飾されていない
<テーブル名>
を指定すると、次のようになります。現在のデータベースと現在のスキーマが存在する場合、コマンドは、現在のデータベースにおける現在のスキーマで指定されたテーブルの記録を取得します。
現在のデータベースが存在しないか、現在のスキーマが存在しない場合、コマンドは、
SQL compilation error: <オブジェクト> 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'
は結果を返します(入力文字列に一致する行がある場合)。
出力¶
列 |
説明 |
---|---|
|
インデックスが作成された日時。 |
|
インデックスの名前。 |
|
インデックスが一意であるかどうか。 |
|
インデックス付き列のリスト。 |
|
対象列のリスト。 |
|
テーブルの名前。 |
|
インデックスが格納されているデータベース。 |
|
インデックスが格納されているスキーマ。 |
|
インデックスを所有するロール。 |
|
所有者ロールの型。 |
例¶
これらの SHOW INDEX の例では、現在のデータベースとスキーマを使用しています。
名前に文字列 DEVICE
を含むインデックスの簡潔なリストを返します。
SHOW TERSE INDEXES LIKE '%DEVICE%';
+-------------------------------+---------------------------------------+-----------------+---------------+-------------+
| 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 |
+-------------------------------+---------------------------------------+-----------------+---------------+-------------+
対象となる列(included_columns
)を持つインデックスのみを返します。SHOW INDEXES コマンドの全出力から特定の行と列を選択するには、 RESULT_SCAN 関数を使用します。
SHOW INDEXES;
SELECT
"name", "is_unique", "table", "columns", "included_columns", "database_name", "schema_name"
FROM TABLE(RESULT_SCAN(LAST_QUERY_ID()))
WHERE "included_columns" != '[]';
以下の出力は、 SELECT クエリ結果のみを示しています。1つのインデックスが 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 |
+------------+-----------+---------------------+-------------+------------------+---------------+-------------+