Oracleテーブルのインデックスステータスと割り当てられた列を検索することは非常に一般的です。
また、インデックスに割り当てられている列を知りたい場合もあります。
このような場合は、次のビューが役立ちます。 oracleでテーブルのインデックスを検索する
dba_ind_columns : This is to used if login with user having DBA role all_ind_columns : This is to used if login with user having normal role user_ind_columns : This is to used if login with user having normal role
Oracleでテーブルのインデックスを確認する方法
Oracleのテーブルのインデックス列をチェックする方法とOracleのテーブルのインデックスをチェックする方法について、以下のクエリを使用できます。 oracleでテーブルのインデックスを検索する方法に関するクエリは次のとおりです
set pagesize 50000 verify off echo off
col table_name head 'Table Name' format a20
col index_name head 'Index Name' format a25
col column_name head 'Column Name' format a30
break on table_name on index_name
select table_name, index_name, column_name
from all_ind_columns
where table_name like upper('&Table_Name')
order by table_name, index_name, column_position
/
で並べ替え Oracleでインデックスステータスを確認する方法
通常のインデックス
SELECT owner, index_name, tablespace_name,status FROM dba_indexes;
Oracleで使用できないインデックスをチェックする方法
SELECT owner, index_name, tablespace_name,status FROM dba_indexes WHERE status = 'UNUSABLE';
インデックスパーティション:
SELECT index_owner, index_name, partition_name, tablespace_name,status FROM dba_ind_PARTITIONS;
使用できないindパーティションを知りたい場合は、以下のクエリを使用できます
SELECT index_owner, index_name, partition_name, tablespace_name,status FROM dba_ind_PARTITIONS WHERE status = 'UNUSABLE';
インデックスサブパーティション:
SELECT index_owner, index_name, partition_name, subpartition_name, tablespace_name,status FROM dba_ind_SUBPARTITIONS;
使用できないindサブパーティションを知りたい場合は、以下のクエリを使用できます
SELECT index_owner, index_name, partition_name, subpartition_name, tablespace_name,status FROM dba_ind_SUBPARTITIONS WHERE status = 'UNUSABLE';
制約に関連付けられたインデックスをチェックするクエリ
SELECT index_name, table_name, uniqueness FROM DBA_INDEXES WHERE table_name = '&1';
スキーマ内のすべてのインデックスを一覧表示する
SELECT index_name, table_name, uniqueness FROM DBA_INDEXES WHERE owner = '&1';
クエリを実行してテーブルのインデックス統計を検索します
set linesize 200
set pages 250
set verify off
col blevel format 99
col table_name format a22 heading 'TABLE NAME'
col u format a1 heading 'U'
col index_name format a25 heading 'INDEX NAME'
col column_name format a23 heading 'COLUMN NAME'
col column_position format 99 heading 'SEQ'
col column_length format 9999 heading 'LEN'
col leaf_blocks format 999990 heading 'LEAF|BLOCKS'
col distinct_keys format 9999990 heading 'DISTINCT|KEYS'
col avg_leaf_blocks_per_key format 999990 heading 'LEAF|BLKS|/KEY'
col avg_data_blocks_per_key format 999990 heading 'DATA|BLKS|/KEY'
rem
break on table_name skip 1 on index_name on u
rem
select i.table_name,i.blevel, i.leaf_blocks, i.distinct_keys,i.avg_leaf_blocks_per_key, i.avg_data_blocks_per_key,
decode( i.uniqueness, 'NONUNIQUE', null, 'UNIQUE', 'U', 'BITMAP', 'B', '?' ) u,
i.index_name,i.last_analyzed, c.column_position, c.column_name, c.column_length
from sys.dba_ind_columns c, sys.dba_indexes i
where (i.table_owner,i.table_name) in ('&1','&2')
and i.owner = c.index_owner
and i.index_name = c.index_name
order by i.table_owner, i.table_name, i.index_name, c.column_position
/
による順序 インデックス列の定義を見つけるためのクエリ
ttitle 'Index Column Definitions'
rem
set linesize 100
set pages 250
set verify off
col table_name format a22 heading 'TABLE NAME'
col u format a1 heading 'U'
col index_name format a20 heading 'INDEX NAME'
col column_name format a25 heading 'COLUMN NAME'
col column_position format 99 heading 'SEQ'
col column_length format 999 heading 'LEN'
rem
break on table_name skip 1 on index_name on u
rem
select i.table_name,
decode( i.uniqueness, 'NONUNIQUE', null, 'UNIQUE', 'U', 'BITMAP', 'B', '?' ) u,
i.index_name, c.column_position, c.column_name, c.column_length
from sys.dba_ind_columns c, sys.dba_indexes i
where i.table_owner like upper('&owner')
and i.table_name like upper('&table')
and i.index_name like upper('&index')
and c.column_name like upper('&column')
and i.owner = c.index_owner
and i.index_name = c.index_name
order by i.table_owner, i.table_name, i.index_name, c.column_position
/
12cで、OracleはPartitionedテーブルに部分インデックスの概念を導入しました。* _ INDEXESビューは、インデックスがFULLかPARTIALかを示すINDEXING列を含むように変更されました。
インデックスのインデックス作成ステータスを確認します。
SELECT index_name, indexing FROM dba_indexes ORDER BY 1; INDEX_NAME INDEXING ------------------------- ------- EXP_INDEX_N1 PARTIAL This happened when we have indexing partial tag in the create index statement. CREATE INDEX EXP_INDEX_NI ON tab_name(col1) Local INDEXING PARTIAL;
関連記事
Oracleの仮想インデックス:Oracleの仮想インデックスとは何ですか?用途、制限、利点、およびOracleデータベースのExplain Planのチェック方法、非表示パラメータ_USE_NOSEGMENT_INDEXES
Oracle Indexクラスタリング係数:Oracle Indexクラスタリング係数の計算方法と、ExplainPlanへの影響
OraclePartitioned Table :Oracleパーティションテーブルとは?、既存のオブジェクトをパーティションオブジェクトに移動する方法?、パフォーマンスのためのパーティション化–パーティションプルーニング
Oracleパーティションインデックス:Oracleパーティションインデックスについて、グローバル非パーティションインデックスとは?、ローカルプレフィックスとはインデックス、プレフィックスなしのローカルインデックス
Oracleのインデックスの種類:このページは、Oracleのインデックス情報、Oracleのさまざまな種類のインデックス、例、Oracleのインデックスの作成/削除/変更方法で構成されています
このOracleインデックス関連のクエリのコンパイルが気に入っていただければ幸いです。テーブルのインデックスを検索する方法、スキーマ内のすべてのインデックスを一覧表示する方法、テーブルのインデックスステータスなど、さまざまなクエリに対する回答を見つけるのに役立ちます。この投稿にさらに価値を加えるために、このリストに他に何を追加できるかを私と共有してください。フィードバックもお願いします
また読む
Oracleですべてのテーブルを一覧表示する方法:all_tables、user_tables、またはdba_tablesを照会することにより、Oracleですべてのテーブルを一覧表示できます。必要に応じて列とwhere句を選択できます
Oracleでテーブルサイズを確認する方法:Oracleデータベースでテーブルサイズを確認するクエリ、特定のスキーマの上位10の大きなテーブル、またはOracleの特定のテーブルスペースを確認します
インデックスの管理方法
推奨コース
OracleSQLの優れたUdemyコースは次のとおりです。
Oracle-Sql-ステップバイステップ:このコースでは、基本的なSQL、結合、テーブルの作成とその構造の変更、ビューの作成、ユニオン、ユニオンなどすべてについて説明します。 。 SQL初心者のための素晴らしいコースと必須のコース
完全なOracleSQL認定コース
:これは、SQL開発者のスキルに対応できるようになりたい人にとっては良いコースです。わかりやすい説明コース
OracleSQLDeveloper:Essentials、Tips and Tricks
:OracleSql開発者ツールは多くの開発者によって使用されています。このコースでは、それを効果的に使用して生産的なSQL開発者になるための秘訣とレッスンを提供します。
Oracle SQL Performance Tuning Masterclass 2020
:パフォーマンスの調整は、重要で最も求められているスキルの1つです。これは、それについて学び、SQLパフォーマンスの調整を開始するための良いコースです