您使用哪个工具来确定查询是否正在使用索引?

时间:2015-09-03 06:22:28

标签: sql

您使用哪个工具来确定查询是否在ANSI兼容数据库中使用索引?

1 个答案:

答案 0 :(得分:0)

正如其他人所说,你还没有说明你使用的是哪个DBMS,所以我已经告诉你我在MSSQL 2014上运行的知识。

您可以使用索引监视功能检查应用程序是否使用索引。如果您为索引设置MONITORING USAGE属性,则可以查询v $ object_usage以查看是否正在使用索引。这是一个例子:

 SQL> CREATE TABLE t1 (c1 NUMBER);
    Table created.


SQL> CREATE INDEX t1_idx ON t1(c1);
Index created.

SQL> ALTER INDEX t1_idx MONITORING USAGE;
Index altered.

SQL> SELECT table_name, index_name, monitoring, used FROM v$object_usage;
TABLE_NAME                     INDEX_NAME                     MON USE
------------------------------ ------------------------------ --- ---
T1                             T1_IDX                         YES NO

SQL> SELECT * FROM t1 WHERE c1 = 1;
no rows selected

SQL> SELECT table_name, index_name, monitoring, used FROM v$object_usage;
TABLE_NAME                     INDEX_NAME                     MON USE
------------------------------ ------------------------------ --- ---
T1                             T1_IDX                         YES YES


To reset the values in the v$object_usage view, disable index monitoring and re-enable it: 

ALTER INDEX indexname NOMONITORING USAGE;
ALTER INDEX indexname MONITORING   USAGE;