現在、SqlDataReader とストアド プロシージャを使用して C# で DAL を手書きしています。パフォーマンスは重要ですが、それでも維持できるはずです...
テーブルレシピがあるとしましょう
(recipeID, author, timeNeeded, yummyFactor, ...)
そして食卓の食材
(recipeID, name, amount, yummyContributionFactor, ...)
ここで、200 ほどのレシピとその材料をクエリしたいと思います。次の可能性が見えます。
- すべてのレシピをクエリしてから、各レシピの材料をクエリします。
もちろん、これは maaany クエリになります。 - 結合された大きなリストですべてのレシピとその材料を照会します。これにより、すべてのレシピ データが複数回送信されるため、多くの無駄なトラフィックが発生します。
- すべてのレシピをクエリしてから、レシピ ID のリストをデータベースに戻して、すべての材料を一度にクエリします。または、両方のクエリを一度に発行して、複数の結果セットを返します。DAL に戻り、recipeID によって材料をレシピに関連付けます。
- エキゾチックな方法: すべてのレシピをカーソルで移動し、各レシピについて、レシピと材料の 2 つの個別の結果セットを返します。結果セットに制限はありますか?
多様性を高めるために、DAL からの ID のリストまたはパラメータ化された SQL 条件によってレシピを選択できます。
パフォーマンスと混乱の比率が最も高いのはどれだと思いますか?