PDA

View Full Version : بهینه سازی کد نوشته شده توسط تکنولوژی linq



morteza_mokhtari
یک شنبه 11 فروردین 1392, 22:51 عصر
سلام دوستان بنده تویه سایتم از linq استفاده کردم سه تا جدول رو بهم join کردم که اگه فرض بکنم که هر جدول 300 تا رکورد داشته باشه join سه تا جدول یه چیزی میشه به اندازه 2700000 رکورد که تعداد خیلی زیاده میشه.برای جلوگیری از اینکار تویه ado.net از select تودرتو استفاده میشه ولی تویه linq نمیدوم چطوری میشه این کار رو کرد کد linq که استفاده کردم اینه




list = (from p in Database.Genarations
join p2 in Database.Person_Generations
on p.GenerationID equals p2.GenerationID
join p3 in Database.Persons on p2.PersonID equals p3.PersonID
where p3.PersonName.Contains(SearchKey)
select p).ToList();



از دوستانی که تسلط دارن ممنون مشم کد بهینه شده کد بالا رو بنویسند .ممنون

saeed31641
دوشنبه 12 فروردین 1392, 10:27 صبح
http://stackoverflow.com/questions/267488/linq-to-sql-multiple-left-outer-joins/267632#267632

http://www.c-sharpcorner.com/UploadFile/3d39b4/inner-join-cross-join-and-left-outer-join-with-linq-to-sql/
شما باید بجای inner join یا outer join از
DefaultIfEmpty استفاده کنی

morteza_mokhtari
دوشنبه 12 فروردین 1392, 15:39 عصر
سلام ممنون از اینکه پاسخ دادید. DefautlIfEmpty چه ربطی به بهنیه سازی linq داره این چیزی که بنده فهمیدم این متد ماله وقتی هست که اگه مقدار اون جدول یا شی مورد نظر ما null یا empty باشه مقدار پیش فرض برای اون در نظر گرفته میشه شما لینک زیر را مشاهده بفرمایید..ممنون اگه میشه شما یا دوستان دیگه کدی رو که بالا نوشتم رو بهینه اش رو بنویسد.

http://stackoverflow.com/questions/8854181/defaultifempty-in-linq

amirsajjadi
دوشنبه 12 فروردین 1392, 16:08 عصر
join در صورتی انجام میشه که شروطی که گذاشتید برقرار بشه پس ربطی به تعداد رکوردهای جدول نداره.
شما چجوری حساب کردید شده 2700000 !!!؟
همین دستوری که نوشتید ظاهرا درسته. بهینه سازی رو شما باید توی جداول انجام بدید.

morteza_mokhtari
دوشنبه 12 فروردین 1392, 22:47 عصر
مقدار 2700000 رو بنده از 300*300*300 بدست آوردن البته اگه شرط رو نادیده بگیرم البته فکر کنم این در بدترین حالت این تعداد میشه.ببنید بنده خودم خیلی تسلط ندارم ولی قبلا تویه کتاب های اس کیو ال که میخواندم یکی از موارد بهینه سازی ترتیب join کردن جداول بود مثلا اگه فرض بکنیم که 3 تا جدول رو میخواهیم join بکنیم تعداد 6 حالت متفاوت برای join کردن آنها وجود داره که یکی از آنها بهینه تز ار بقیه هستش.و یا به جای استفاده از join بهتره از select های تودر تو استفاده بشه.