AnySQL中的特色功能介绍(九) -- ORA OBJSQL

    Oracle 9i以后多了个视图V$SQL_PLAN, 这个视图可以用于显示当前正在使用的SQL的执行计划, 其中有两列OBJECT_OWNER和OBJECT_NAME, 指的是执行计划中会访问到的对象, 包括表及索引等. 这个视图是很有用的, 除了看正在使用的执行计划外, 还可以用来看那些SQL在访问某个表或索引, 在你将要删除一个认为不重要的索引以前, 不防先看一下有没有SQL在用这个索引, 然后去看一下这个SQL的执行情况. "ORA OBJSQL"这个自定义命令就是为这个用途设计的.

    下面是一个使用的例子:

ASQL> ora objsql anysql.t_HASH

0 rows returned.

ASQL> SELECT COUNT(*) FROM ANYSQL.T_HASH;

COUNT(*)
--------
    7485

1 rows returned.

ASQL> ora objsql anysql.t_HASH

0 rows returned.

    为什么这个取记录数的SQL没有显示出来呢, 是因为这个表上面有一个唯一索引, 刚好索引的列是定义为非空的, 所以这个SQL去走索引了, 我们将"ORA OBJSQL"中的对象名换为索引的名字试试.

ASQL> ora objsql anysql.IDX_T_HASH

HASH_VALUE VERS SORTS EXECS READS GETS ROWCNT
---------- ---- ----- ----- ----- ---- ------
606471602    0     0     1    39  199      1

1 rows returned.

ASQL> ORA HASH 606471602

SELECT COUNT(*) FROM ANYSQL.T_HASH

    要写这出个后面的SQL其实很简单, 不需要我在这儿贴出来了.

发表留言: