1

ばかげた質問に聞こえたら申し訳ありませんが、SQL ヒントを長い間使用しておらず、学校の章の復習作業を行っています。頭をそれらに巻き付けるのに苦労しています。

たとえば、私が作成したテストデータベースでオラクルで行った1つの質問は、「毎日のオークションの合計数の上位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;

私が今抱えている問題は、別のクエリでこの出力を達成しようとすることです。先生に尋ねたところ、ヒントを使用するつもりだと彼らは言いました。ヒントを使用してこのクエリを最適化する方法や、より簡単な方法でそれを行う方法を十分に説明していません。

どんな助けでも本当に感謝します

=) みんなありがとう!

4

1 に答える 1

1

ヒントは、使用するインデックスをコスト ベース オプティマイザーに指示するためにクエリに含めるオプションです。毎日の合計は、要約インデックスを実装できるもののようです。

于 2011-05-23T19:53:25.057 に答える