2017-08-29 8 views
0

クエリ、インデックスまたはインデックスがないかどうかを確認する必要があります。テーブル内のチェックインデックスのOracle SQL - SQLクエリで欠落しているインデックスを確認します。

は、私は次の構文を使用します。

SELECT index_name 
    , column_position 
    , column_name 
    FROM user_ind_columns 
WHERE table_name = 'table_name' 
ORDER BY index_name, COLUMN_POSITION; 

SELECT index_name 
FROM user_indexes 
WHERE table_name = 'table_name'; 

クエリにインデックスが不足している場合は、自動的に見つけるために、プログラムまたはSQLスクリプトを使用して作成する彼らのためにそれを表示することは可能でしょうか?

ありがとうございます!

+0

についてEXPLAIN PLANの? –

答えて

2

execution planをチェックすると、オプティマイザが使用するインデックスがあればそれが表示されます。計画にインデックスがない場合は、

  1. インデックスはありません。
  2. インデックスはありますが、特定のクエリには使用できません。
  3. 技術的に使用できるインデックスがありますが、オプティマイザはパフォーマンスを向上させないと計算します。

#3の場合、間違っている可能性があります(統計情報が正しくないか、オプティマイザが正確にモデル化できないクエリなどのため)。これがあなたが探している状況であれば、それを検出する簡単な方法はありません。

dbms_sqltuneでは自動チューニングの提案があります。一般的には、統計情報を収集するか、SQLプロファイルまたは新しいインデックスを提案することがあります。あなたは、Enterprise Managerのまたはスクリプトから呼び出すことができます:あなたが話している

http://www.williamrobertson.net/documents/automated-sql-tuning-advice.html http://www.williamrobertson.net/documents/automated-sql-tuning-advice-sqlid.html

関連する問題