【问题标题】:Tuning of query with ALL_OBJECTS view使用 ALL_OBJECTS 视图调整查询
【发布时间】:2014-08-15 18:15:22
【问题描述】:

我需要帮助调整以下涉及从 Oracle 数据字典 ALL_OBJECTS 查询的查询。

SELECT OBJECT_NAME ,OBJECT_TYPE 
FROM ALL_OBJECTS OBJ 
WHERE (OBJ.OWNER ='HR') 
AND (OBJ.OBJECT_TYPE IN ('TABLE','VIEW'));

我尝试使用以下提示调整查询,但帮助不大。

SELECT /*+ STAR_TRANSFORMATION */ OBJECT_NAME
       ,OBJECT_TYPE 
FROM ALL_OBJECTS OBJ 
WHERE (OBJ.OWNER ='HR') 
AND (OBJ.OBJECT_TYPE IN ('TABLE','VIEW'));

任何帮助将不胜感激。非常感谢。

【问题讨论】:

  • 为什么你认为这个提示会在这里有所作为?您是否以 HR 用户的身份运行它 - 如果是这样,您可以使用 user_objects,甚至是 _tables_views
  • 除了@AlexPoole 的建议之外,您使用的是什么版本的Oracle 以及您如何(如果有的话)收集数据字典对象的统计信息?有很多特定于版本的注意事项,但如果您对单个数据字典表的查询具有不太理想的计划,那么问题通常是统计问题。
  • 这周我的心灵感应很糟糕。您能否描述一下您遇到的性能问题?我定期运行与此类似的查询并获得亚秒级响应时间(Oracle 11.1)。您是否收集了ALL_OBJECTS 视图查询的表的完整统计信息?
  • @BobJarvis - 不知道为什么您认为在非数据字典表上收集统计信息会有所帮助。

标签: performance oracle query-optimization data-dictionary


【解决方案1】:

查询数据字典时遇到问题是不寻常的,但并非未知。我发现它是一个问题的一种情况是数据库看到很多模式重建 - 例如共享开发或持续集成目标。在这种情况下,数据字典对象的统计数据可能非常不准确。如果这听起来适合您的情况,您可以请友好的 DBA(或任何其他具有必要特权的人)运行 GATHER_DICTIONARY_STATS()Find out more.


顺便说一句,我真的不确定您为什么认为 STAR_TRANSFORMATION 可能对您有所帮助:该提示旨在将连接转换为子查询以模仿 a star schema in a data-warehouse style。你没有连接,所以这只是神奇的想法。

【讨论】:

  • @Bacs - 你可能会觉得这个答案很有启发性。
  • 我坚持我的回答(表达不佳,因此已删除),没有什么可以调整查询的。我没有想到调整数据库可能会有所帮助,所以是的,谢谢,这很有启发性。
猜你喜欢
  • 2017-03-02
  • 1970-01-01
  • 1970-01-01
  • 2013-02-06
  • 2022-10-15
  • 1970-01-01
  • 1970-01-01
  • 2022-06-15
  • 1970-01-01
相关资源
最近更新 更多