在 Oracle 中,使用 Java 的 JDBC,我正在尝试优化特定查询:
select sql_fulltext from v$sql where last_active_time > ?
(?=最近的某个日期)
查询运行时间在 1.8 秒内,即使没有结果。 我想知道如何改进它。
最好的事情是如果我在 last_active_time 上有一个 INDEX,但它是一个 View 。
我的问题是: 如何提高查询的运行时间? 我可以发送任何可能的提示吗? 是否可以在此 View 上创建物化 View ,并以某种方式对其进行索引?
如有任何建议,我们将不胜感激。
谢谢
最佳答案
V$SQL
已知速度有些慢。它在很大程度上是您在那里查询的内存结构。如果您担心性能(以及对系统的影响),您应该使用 V$SQLSTATS
。
The column definitions for columns in V$SQLSTATS are identical to those in the V$SQL and V$SQLAREA views. However, the V$SQLSTATS view differs from V$SQL and V$SQLAREA in that it is faster, more scalable, and has a greater data retention
(强调我的)
但是有一个缺点:V$SQLSTATS
不包含 V$SQL
中的所有列,但它包含 SQL_FULLTEXT
列,所以它应该适合您的用例
关于Oracle - 使用 v$sql 优化查询,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22828386/