SELECT
のSELECT
に追加のパフォーマンスが発生するか、またはデータベースがこれを最適化するのに十分スマートであるかどうかは疑問でした。例えばSELECTのSELECTの実行
、私は次のように私はいくつかの選択を持っている:
SELECT a.year, b.month, c.day, totalVolume from
(SELECT DATEPART(year, transactionTime) as year,
DATEPART(month, transactionTime) as month,
DATEPART(day, transactionTime) as day,
SUM(volume) as totalVolume FROM DOW30
GROUP BY DATEPART(year, transactionTime),
DATEPART(month, transactionTime),
DATEPART(day, transactionTime)) a
order by a.year, b.month, c.day
すべてこの特定のクエリではないグループは、日付によってDow30ですべての取引で、全量を合計。これはテーブルが1秒ごとにすべての取引を保存しているので、私はこれを使用します。これを1日単位でロールアップしたいのです。
これは完全なクエリではなく、単なる例です。 SELECT
からSELECT
のSELECT
を実行すると、パフォーマンスペナルティが発生するかどうか、またはすべてが魔法のように最適化されているかどうかは分かりませんでした。
私がクエリをこのように定式化する理由は、これがクエリを視覚化する方法であり、実際にはこのトップレベルのselect
を別のテーブルに結合し、基底の列を選択するからです。SELECT
クエリを視覚化する。しかし、正式なDBAのバックグラウンドを持たない私は、これが間違っているかどうか、私がクエリを書く良い方法を見つけ出す必要があるかどうかはわかりません。
例について話しているあなたは、クエリプランのために見ていたことがありますか?私はSQL Serverのためにそれを得る方法を知らないが、おそらくあなたはそれをあなた自身で見つけることができます。 データベースにクエリがどのように表示されるかを表示します。 – fkerber
私はSQL Serverのエキスパートではありませんが、サーバーの最適化を期待しています...これは推測ではなく、クエリーのクエリプランを確認することしか知りません - サーバーが何を作成するのかを見ることができます。インデックスが必要かどうかについてのヒント... – Yahia