2011-05-23 64 views
1

我很抱歉,如果我听起来很傻,但我一直没有使用sql提示,而且我正在为学校的某些章节复习工作。我无法把头缠到他们身上。在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; 

我现在面临的问题是,对我来说,尝试用不同的查询来实现这个输出,我问我的老师,他们说他们的意思是使用提示,我查看了我对他们的记录,它确实没有不足以解释如何优化这个带有提示的查询,或者以更简单的方式来完成这个查询。

任何帮助真的很感谢

=)谢谢你们!

+0

此查询是否可以工作?内联视图具有anlaytic功能和“group by”。我不认为你可以拥有两者。 – redcayuga 2011-05-23 19:11:35

+2

你说你的老师说的是错的。提示永远不会改变查询的逻辑结果(如果他们这样做,这将是一个错误)。 – 2011-05-24 05:28:45

回答

1

提示是您在查询中包含的选项,用于指导要使用的索引的成本基础优化器。 它看起来像每日总数是你可以实现一个总结索引。

+0

谢谢!我感谢你的意见。 – Miwa 2011-05-24 01:07:17

+0

因此,在SQL中添加的提示,它们不会更改SQL本身,而是伴随它来更好地定义问题? – Miwa 2011-05-24 01:08:12

+1

提示没有更好地定义问题,他们指示数据库*如何*得到答案。带提示的查询就像驾驶汽车,而忽略GPS导航。只有当你知道*你可以做得比你的GPS更好时,你才会这么做。 – 2011-05-24 08:41:05