私が働いている会社用に単純なビジネス分析アプリケーションを作成しており、過去 6 年間の販売取引の 100 MB の csv ファイルをいくつかのデータベースに解析しています。
アプリケーションで表示したい数値の 1 つは、顧客ごとの 1 日あたりの売上高と利益であるため、while ループは次のようになります。
while(start_date < current_date)
{
SELECT SUM(profit), SUM(turnover) FROM sales WHERE date = @date
}
そのため、6 年間毎日顧客がいるのと同じ回数、数十万行のテーブルでそのクエリを実行しています。
私は常に、DB で実行できるすべての作業を実行する必要があると信じていました。そのため、SUM クエリを使用して列を合計しました。
他にどのような最適化を行うことができますか? 現時点では...まあ、8GBのクアッドコアサーバーで過去1時間実行されており、約2〜3%であるように見えるため、わかりません.
私は SQL Server Compact Edition を使用しています。これは C#/.NET の winforms アプリケーションですが、ここでは明らかに db がボトルネックになっています。