在oracle中,使用Java中的JDBC,我正在尝试优化特定查询:
select sql_fulltext from v$sql where last_active_time > ?
(?=最近约会)
查询运行时间为1.8秒,即使没有结果。 我想知道如何改进它。
最好的事情是,如果我在last_active_time上有一个INDEX,但它是一个视图。
我的问题是: 如何改善查询的运行时间? 我可以发送任何可能的提示吗? 是否可以在此视图上创建物化视图,并以某种方式将其编入索引?
任何建议都将不胜感激。
由于
答案 0 :(得分:4)
V$SQL
有点慢。它在很大程度上是你在那里查询的内存结构。如果您担心性能(以及对系统的影响),请改为使用V$SQLSTATS
。
V $ SQLSTATS中列的列定义与V $ SQL和V $ SQLAREA视图中的列相同。但是,V $ SQLSTATS视图与V $ SQL和V $ SQLAREA的区别在于它更快,更具可伸缩性,并具有更大的数据保留
(强调我的)
但有一个缺点:V$SQLSTATS
不包含V$SQL
中的所有列,但它确实包含SQL_FULLTEXT
列,因此对于您的用例来说应该没问题