sql >> データベース >  >> RDS >> Oracle

Oracleでテーブルのインデックスを見つける方法

    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パフォーマンスの調整を開始するための良いコースです


    1. XML_LOAD()を使用してXMLファイルをMySQLデータベーステーブルにインポートする方法。働き

    2. OracleのPostgresのDISTINCTONに相当しますか?

    3. Oracleスキーマユーザーはプロシージャでテーブルを作成できません

    4. PostgreSQLおよびTimescaleDB用にAppArmorを構成する方法