Oracle - 使用v $ sql优化查询

时间:2014-04-03 05:14:06

标签: oracle

在oracle中,使用Java中的JDBC,我正在尝试优化特定查询:

select sql_fulltext from v$sql where last_active_time > ?

(?=最近约会)

查询运行时间为1.8秒,即使没有结果。 我想知道如何改进它。

最好的事情是,如果我在last_active_time上有一个INDEX,但它是一个视图。

我的问题是: 如何改善查询的运行时间? 我可以发送任何可能的提示吗? 是否可以在此视图上创建物化视图,并以某种方式将其编入索引?

任何建议都将不胜感激。

由于

1 个答案:

答案 0 :(得分:4)

众所周知,{p> V$SQL有点慢。它在很大程度上是你在那里查询的内存结构。如果您担心性能(以及对系统的影响),请改为使用V$SQLSTATS

引用from the manual

  

V $ SQLSTATS中列的列定义与V $ SQL和V $ SQLAREA视图中的列相同。但是,V $ SQLSTATS视图与V $ SQL和V $ SQLAREA的区别在于它更快,更具可伸缩性,并具有更大的数据保留

(强调我的)

但有一个缺点:V$SQLSTATS不包含V$SQL中的所有列,但它确实包含SQL_FULLTEXT列,因此对于您的用例来说应该没问题