Arkadaşlar merhaba;
Konuyu olabildiğince kısa tutarak sorumu soracağım biraz karışık bir durum işlem yaptırdım fakat çok uzun sürüyor.Bu da veri sayısı daha fazla olunca timeout problemi doğuracağı için yardımınızı almak istedim.
Öncelikle verilerim şu şekilde;
Kişiler tablom var burada kişilerle ilgili birsürü veri var
Birde Tatil tablom var burada tatil adı tarihi ve birde check alanı var (Ara tabloyla bağlama sebebim aynı tatilin birden çok kişiye eklenmesi 19 mayıs bayramı gibi)
Ara tablomda ise tatilid ve kisi id alanım var bunları bağlayan.
Yapmak istediğim güncelleme ise kişi tablosunda örnek olarak ülkesi Türkiye olan kişilere 19 mayıs tarihli tatil eklenecek.Entity framework ile yazdığım kod burada.Kısa tutmak istedim ama umarım anlatabilmişimdir.Aşağıda ki kodda aşırı performans sorunu
var bunu hızlandırabilecek fikirlerinizi bekliyorum.
//Kişi idlerinin tutulacağı liste
List<int> kisiid = new List<int>();
//EKlenecek tatilin Holidays tablosundaki id'si
int holiId = GetHolidayId();
//Ülkelerin seçildiği checkboxlist
foreach (ListItem item in chkCountryList.Items)
{//Eğer bu ülke seçiliyse çalışacak kod
if (item.Selected)
{
int countryid = int.Parse(item.Value);
//Bu ülke kodundaki kişilerin idsini al
kisiid = db.Kisiler.Where(filter => filter.CountryID == countryid).Select(filter => filter.ID).ToList();
foreach (var item2 in kisiid)
{
//seçili ülke idsindeki kişilerin herbir idsi için ara tabloya kayıt açıp ekliyor en sondada kaydediyor.
SubHoli newholi = new SubHoli
{
HoliID=holiId,
KisiID=item2,
};
db.SubHolis.Add(newholi);
}
}
//db.SaveChanges();
}
Edit: Holidays Tablosu tahmini 200 veriden öte geçmez ama kişiler tablosu 500bin civarı olacak ayrıca subholide 500bin çarpı holidays dersek bayağı veri barındırıcak içinde.Ama tabi tahminin subholis tablosu 2 milyonu geçmez