【问题标题】:Using 'HINTS' in sql query在 sql 查询中使用“提示”
【发布时间】:2011-05-23 18:53:31
【问题描述】:

很抱歉,如果我的提问听起来很愚蠢,但我使用 sql 提示的时间不长,我正在为学校复习一些章节复习工作。我很难把头缠在他们身上。

例如,我在 oracle 中对我所做的测试数据库提出的一个问题是“显示每日拍卖总数的前 10%。我的答案是(有效):

SELECT DAYOFWEEK, DAILY_TOTAL
FROM (
    SELECT T.DAYOFWEEK,
      SUM(AF.TOTAL_NUM_OF_AUCTIONS) AS DAILY_TOTAL,
      CUME_DIST() OVER (ORDER BY SUM(AF.TOTAL_NUM_OF_AUCTIONS) ASC) AS Percentile
    FROM TIME_DIM T, AUCT_FACT AF
    WHERE AF.TIME_ID = T.TIME_ID
    GROUP BY T.DAYOFWEEK)
WHERE Percentile > .9
ORDER BY Percentile DESC;

我现在遇到的问题是,它说,我尝试用不同的查询来实现这个输出,我问了我的老师,他们说他们打算使用提示,我查看了我对他们的笔记,然后它确实没有足够彻底地解释如何使用提示优化此查询,或者以更简单的方式进行。

任何帮助将不胜感激

=) 谢谢大家!

【问题讨论】:

  • 这个查询是否有效?内联视图具有分析功能和“分组依据”。我不认为你可以两者兼得。
  • 你说你老师说的是错的。提示永远不应该改变查询的逻辑结果(如果他们这样做了,那将是一个错误)。

标签: sql oracle ranking query-hints


【解决方案1】:

提示是您在查询中包含的选项,用于指导成本基础优化器使用哪些索引。 看起来每日总计是您可以在其上实施汇总索引的东西。

【讨论】:

  • 谢谢!感谢您的意见。
  • 那么提示只是添加到 SQL 中,它们不会更改 sql 本身而是伴随它以更好地定义问题?
  • 提示并没有更好地定义问题,它们指示数据库如何获得答案。带有提示的查询就像开车时忽略了 GPS 导航。只有当你知道你可以比你的 GPS 做得更好时,你才会想要这样做。
猜你喜欢
  • 2018-03-08
  • 2023-02-25
  • 1970-01-01
  • 2014-09-19
  • 1970-01-01
  • 1970-01-01
  • 2016-04-05
  • 2017-06-27
  • 1970-01-01
相关资源
最近更新 更多