-4

どうすれば最速のパフォーマンスを得ることができますか? 私はいつも手順で計算するよりも、クライアント アプリケーションで計算を使用します。評価する約10,000行のテーブルを取得しました。データベースはホスティング Web サーバーにあり、すべての行を読み取り、アプリケーションのデータグリッドに表示しています。

したがって、「ProductPrice」列と「ProductQty」列を読み取る途中で、ProductPrice * Qty を計算し、ストリーミングするデータが少ないことを考慮して、アプリケーション内の別の列に格納できます。

次のうちどれがより速いでしょうか?

SqlCommand sqlCmdTxt = new SqlCommand(conn);
SqlDataReader sqlRead;

sqlCmdTxt.commandText = "Select ProductPrice, ProductQty, ProductPrice * ProductQty As Total From Stock";
sqlRead = sqlCmdTxt.ExecuteReader();
while (
sqlRead.Read()) {
    double price = sqlRead.GetDouble(0);
    double qty = sqlRead.GetDouble(1);
    double sum = price * qty;

    dataGridView.rows.add (new object[] {price, qty, sum});
}

また

SqlCommand sqlCmdTxt = new SqlCommand(conn);
DataSet dSet = new DataSet();
new SqlDataAdapter(new SqlCommand("Select ProductPrice, ProductQty, ProductPrice * ProductQty As Total From Stock"
    , conn)).Fill(dSet, "StockList");
dataGridView.DataSource = dSet.Tables["StockList"].DefaultView;
4

4 に答える 4

3

私の意見は、すべての計算をサーバー上で行うことです。そのほうが確実に高速です。

SQL Server に低速のマシンを使用すると、サーバーでの実行結果が悪化する可能性があります。同じマシンで実行している場合は、SQL Server を使用することを好みます。

于 2013-10-11T09:57:15.743 に答える
0

SQL エンジンとアプリケーション間で転送するデータが少ないため、C# のコードが高速になる可能性があります。50,000 行の場合、これはあまり重要ではありませんが、行とテーブルがはるかに大きくなると、転送コストが節約され、低速のネットワークを経由する可能性があり、大きな違いが生じる可能性があります。

この SQL がサーバーで 2 回目に実行されたときに、SQL が結果をキャッシュした可能性があります。したがって、より高速になる可能性があります(計算が少なくなります)が、それでも転送コストがかかります.

于 2013-10-11T10:13:20.183 に答える