1

私がこれに正しい方法で取り組んでいるかどうかはわかりませんが、非常にオープンで、どんな提案にも感謝しています.

SQL データベースのデータからグラフを作成しています。

グラフには「年齢」と「パーセンタイル」、またはこれらが私が最も関心のある 2 つのフィールドです。

web.config に「パーセンタイル」と呼ばれる構成セクションがあります。これは、表示されるパーセンタイルをこの構成セクションで識別できるようにするためです。例えば:

<percentiles>
<add percentile="P50" visible="true">
<add percentile="P75" visible="true">
<add percentile="P85" visible="false">
<add percentile="P95" visible="true">
...
</percentiles>

パーセンタイルのリストを解析し、DataSet をフィルタリングするか、そのリストに基づいてクエリを生成したいと考えています。パーセンタイルはデータベースに列として保存されます。たとえば、その構成に基づいてクエリを次のように表示したい

SELECT P50, P75, P95 FROM MyData

ここで、SELECT * を実行して DataSet からそれらの列を削除するか、チャートに「シリーズ」として追加しないだけでよいと思います。ただし、私は自分のやり方を改善しようとしている初心者の開発者です。私の小さな経験では、すべてのデータを取得することは (少量ではありますが) 良い方法ではないようです。

ここで、SQLDataAdapter にたどり着きました。コードを使用してクエリを作成し、必要な列のみを含めることはできますか? 可能かどうか疑問に思っている疑似コードは次のようなものです。

foreach(Percentile p in PercentileConfiguration)
{
    myDataAdapter.Select.Columns.Add(p.Percentile);
}

これは良いアプローチですか?すべての提案は非常に高く評価されています! ありがとうございました!

4

2 に答える 2

0

SELECT * .... は、SELECT P50、P75 などよりもわずかに遅くなりますが、ほんのわずかです。クエリを 1 回だけ実行し (ループなどで複数回実行するのではなく)、テーブルに大量の列や巨大なデータを含む列がない場合、パフォーマンスへの影響はわずかであるため、特定の列を選択するための労力とメンテナンスは、おそらく価値がありません。誰かが私に、読み取り可能な (保守可能な) コードと、1 ミリ秒速く実行されるコードのどちらかを選択する必要がある場合は、読み取り可能なコードを使用すると言いました。

そうは言っても、それを行う場合は、SQL テキストを作成してから、それをアダプターに渡すだけです。

何かのようなもの:


StringBuilder columns = new StringBuilder();
foreach(Percentile p in PercentileConfiguration)
{
    if(columns.ToString().Length > 0) columns.Append(", ");
    columns.Append(p.Percentile);
}
string sql = string.Format("SELECT {0} FROM myTable", columns.ToString());
SqlDataAdapter da = new SqlDataAdapter(sql, connectionString);
...
...
...
于 2009-11-04T22:51:33.397 に答える
0

よくわかりません。一見すると、これは純粋にデータベースのクエリ方法に関する質問のように見えます。その答えは、それを行うための SQL コマンドを作成することです。データベースのフィールド名を web.config に保存している理由がわかりません。クエリを "SELECT P50, P75, P95 FROM MyData" のようにしたい場合は、そのようにします。

于 2009-10-26T08:02:26.200 に答える