2011-05-23 42 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