クエリの実行時に特定のOracleインデックスがOracleによって使用されたことがあるかどうかを確認する方法はありますか?
関数ベースのインデックスがありますが、これはOracleで使用されていないため、一部のクエリの実行が遅くなっていると思われます。データベースに対して実行されたクエリがこのクエリを使用しているかどうかを確認するにはどうすればよいですか?
質問が次の場合:インデックスを使用するクエリがあるかどうか。
ALTER INDEX myindex MONITORING USAGE;
数日/月/年待つ:
SELECT *
FROM v$object_usage
WHERE index_name = 'MYINDEX';
http://docs.oracle.com/cd/B28359_01/server.111/b28310/indexes004.htm#i1006905
ある種のIDE(たとえば、OracleのSQL Developer、AllroundAutomationsのPL/ SQL Developer、Toadなど)を使用している場合、それぞれにステートメントの計画をダンプする方法があります。 -ラインヘルプ。
SQL * Plusに入ることができる場合(使いやすいコマンドラインで「sql」と入力してみてください)、自動トレースをオンにしてステートメントを実行すると、計画が印刷されます。のように
SQL> set autotrace on
SQL> select * from dept where deptno = 40;
DEPTNO DNAME LOC
---------- -------------- -------------
40 OPERATIONS BOSTON
Execution Plan
----------------------------------------------------------
0 SELECT STATEMENT Optimizer=CHOOSE (Cost=1 Card=1 Bytes=18)
1 0 TABLE ACCESS (BY INDEX ROWID) OF 'DEPT' (Cost=1 Card=1 Bytes=18)
2 1 INDEX (UNIQUE SCAN) OF 'PK_DEPT' (UNIQUE)
Statistics
----------------------------------------------------------
0 recursive calls
0 db block gets
2 consistent gets
0 physical reads
0 redo size
499 bytes sent via SQL*Net to client
503 bytes received via SQL*Net from client
2 SQL*Net roundtrips to/from client
0 sorts (memory)
0 sorts (disk)
1 rows processed
これは、友好的な近所のDBAがこの機能を有効にするために必要な呪文を実行したことを前提としています。これが行われていない場合、またはOne More Way(tm)でこれを実行したい場合は、次のようなものを試して、気になるクエリに置き換えてください。
SQL> EXPLAIN PLAN FOR select * from dept where deptno = 40;
Explained.
SQL> set linesize 132
SQL> SELECT * FROM TABLE( dbms_xplan.display);
PLAN_TABLE_OUTPUT
---------------------------------------------------------------------------------------
Plan hash value: 2852011669
---------------------------------------------------------------------------------------
| Id | Operation | Name | Rows | Bytes | Cost (%CPU)| Time |
---------------------------------------------------------------------------------------
| 0 | SELECT STATEMENT | | 1 | 20 | 1 (0)| 00:00:01 |
| 1 | TABLE ACCESS BY INDEX ROWID| DEPT | 1 | 20 | 1 (0)| 00:00:01 |
|* 2 | INDEX UNIQUE SCAN | PK_DEPT | 1 | | 0 (0)| 00:00:01 |
---------------------------------------------------------------------------------------
Predicate Information (identified by operation id):
---------------------------------------------------
2 - access("DEPTNO"=40)
14 rows selected.
共有してお楽しみください。