私は顧客のためにピラミッドスキームを設計しており、この構造をシステムに適用しようとしています。参照スキームです。誰かがウェブサイトに参加するためのイントロなら、すべての上位層が紹介料を享受します。ピラミッドループのパフォーマンスチューニング
これは、私のテーブル構造であるので、列で紹介に基づいて、私はすべての上の行または特定のユーザーの下の行をバック見つけることができます。
しかしループにこの文を使用してI、(申し訳ありません、それは大きいので、完全なコードを提供することはできませんが、それは以下のコードを理解することが簡単にできます)
for (int a = 0; a < lowerLine.Count; a++)
{
var query3 = from data in db.users_table where data.referral_by == referralUser && data.is_activated == true select new{ data.user_id,data.introducer};
var lowerLine2 = query3.ToList();
lowerLineCount2 += lowerLine2.Count;
totalCount += lowerLine2.Count;
}
それは、LINQ文のときに、それ総紹介を得るためにピラミッドの終わりまでループし続けます。しかし、もしこれを実行すると、彼は500の参照を持っていると、すべてのデータを取得するのが非常に遅くなります。
この場合、ストアドプロシージャを使用してすべてのデータを取得するソリューションがあると思いますが、そのステートメントを500回実行しようとすると、パフォーマンスはまだ非常に遅い26秒ですが、すべてのデータを取り出します。その結果、ストアドプロシージャは、一度
で実行したとき、それはまだ遅くなりますので、選択ではない私は、10秒以内に、このピラミッドスキームからすべてのデータを取得する方法を知っているかもしれませんか?私はchar(n)
が悪い癖で、簡単にあなたの問題原因、私は常にユーザーに入力されたNVARCHAR(n)
を使用したいことができます使用して、しかし、私は結果によって紹介のインデックスはまだ
可能なアプローチ:[https://stackoverflow.com/a/18111876/1565525](https://stackoverflow.com/a/18111876/1565525) – Fabio
またその良くありませんポストを読むのが少し難しくなるので、あまりにも多くの写真を貼り付けるには –