私は通常MySQLデータベースで動作しますが、現在SQL Serverデータベースに対するクエリでいくつかの問題が発生しています。平均を得るためのSQL Serverの遅いクエリ
私は、列の平均を1日ごとにグループ化することを試みています。これは、数百行を返す場合でも、20-30秒のどこかにかかる。
しかし、テーブルには数百万のエントリが含まれています。これはインデックス作成のプロパティと関係があると確信していますが、ここで正しい解決策を見つけられないようです。
ので、クエリは次のようになります:
select
[unit_id],
avg(weight) AS avg,
max(timestamp) AS dateDay
from
[measurements]
where
timestamp BETWEEN '2017-06-01' AND '2017-10-04'
group by
[unit_id], CAST(timestamp AS DATE)
order by
[unit_id] asc, [dateDay] asc
私はUNIT_ID、体重およびタイムスタンプフィールドを含む非クラスタ化インデックスを設定しています。
多分タイムスタンプのためのキャストが問題である、それは違いを作る場合、あなたはしてみてくださいましたか? –
注文する必要がない場合は、取り外してください。 – Amit
キャストと削除の両方を削除すると、25秒間のクエリが返されます。 –